• 编程挑战赛第六期我带我的小侄子来了【赛题解析】


    CSDN编程竞赛报名地址:https://edu.csdn.net/contest/detail/16
    (请不要删掉此地址)

    努力是为了让自己不平庸,
    我被我小侄子拉来参加了CSDN编程竞赛啦!

    一、前言/背景

    前情提要,我家小侄子今年刚上大一,据说自己编程水平很高,这也不服,那些不服。鉴于暑期被我摁着头在家苦学一个月,怨念太大,这次编程大赛,特别发微信并at我,为了不输于他,特此参加,再怎么菜,也不能比他菜,您说是不?

    二、大赛简介

    https://img-blog.csdnimg.cn/58566c80ed1b40a5b1a297a0b0bca455.png

    三、参赛流程

    1.开始报名

    早在多日前,收到我侄子发我的竞赛地址,我就报名了,哈哈哈。

    2.收到短信

    早上睡醒8点多,顺便收到之前的短信了,短信转发微信,直接浏览器打开,差2分钟开始,好巧。

    3.答题提交

    收拾东西,再看时间到了,点击进入,看题,一二一,做完,反复检查,OK了就提交了,然后想想我侄子在答题,就没打扰他,12点打电话问他咋样,说跟他平时学的C语言不一样啊,哭晕了。哈哈哈,他是学的C语言,但是没学类,对这次的答题模板还是不很熟悉,哈哈哈。
    https://img-blog.csdnimg.cn/121d4e6d2ad14e6ebdba78eb6a83b618.png

    四、参赛经历

    1.第一次竞赛

    这是我有史以来第一次参加竞赛,个感觉好有趣,很喜欢,因为题目特别有趣,哈哈哈。

    2.竞赛注意事项

    我用的python,所以比较简单。基本上就是常规操作,没有特别难的部分。但是题目都很有趣,很有意思,刚开始还想把题目复制出来,发个朋友圈,试了几次突然发现有复制和切出去的提示,说切出去次数多就直接提交了,就不敢复制和切出去了。

    五、解题思路

    1.严查枪火

    最近开始严管枪火。 像是“ak”,“m4a1”,“skr”。都是明令禁止的。 现在小Q查获了一批违禁物品其中部分是枪支。
    小Q想知道自己需要按照私藏枪火来关押多少人。 (只有以上三种枪被视为违法)

    class Solution:
    	def __init__(self) -> None:
    		pass
    	def solution(self, n, vector):
    		result = 0
    		# TODO: 请在此编写代码
    		for i in range(n):
    			if vector[i] in ['ak', 'm4a1', 'skr']:
    			result=result+1
    		return result
    	if __name__ == "__main__":
    		n = int(input().strip())
    		vector = []
    		for i in range(n):
    			vector.append(input().strip())
    		s = Solution()
    		result = s.solution(n, vector)
    		print(result)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    这是第一题,没啥说的,python 嘛,轮子都有了,直接写就好了。

    2.鬼画符门

    鬼画符门,每年都会统计自己宗门鬼画符消耗的数量,往年一直是大师兄管理, 但是这次鬼艺接手了, 你能帮鬼艺写一个
    程序统计每年消耗数量最多的鬼画符吗?

    class Solution:
    	def __init__(self) -> None:
    		pass
    	def solution(self, n, vector):
    		result = ""
    		result_list={}
    		for item in vector:
    			if item not in result_list:
    				result_list[item]=1
    			else:
    				result_list[item]=result_list[item]+1
    		# TODO: 请在此编写代码
    		for key , value in result_list.items():
    			if value==max(result_list.values()):
    				result=key
    		return result
    if __name__ == "__main__":
    	n = int(input().strip())
    	vector = []
    	for i in range(n):
    		vector.append(input().strip())
    	s = Solution()
    	result = s.solution(n, vector)
    	print(result)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    这个题目就是考了python的map使用:

    • 首先建立map,有的放进去,并+1;
    • 获取map中value最大的,然后返回key。

    3.收件邮箱

    已知字符串str,str表示邮箱的不标准格式。 其中”.”会被记录成”dot”,”@”记录成”at”。 写一个程序将str转化成可用
    的邮箱格式。(可用格式中字符串中除了开头结尾所有”dot”,都会被转换,”at”只会被转化一次,开头结尾的不转化)

    class Solution:
    	def __init__(self) -> None:
    		pass
    	def solution(self, strabc):
    		# result = None
    		# TODO: 请在此编写代码
    		result=strabc[1:-1].replace('dot','.').replace('at','@',1)
    		result=strabc[0]+result+strabc[-1]
    		return result
    if __name__ == "__main__":
    	strabc = input().strip()
    	s = Solution()
    	result = s.solution(strabc)
    	print(result)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    这个题目我有点取巧,直接用的replace函数解决掉的,属于有手就可以写的。

    4.最长递增的区间长度

    给一个无序数组,求最长递增的区间长度。如:[5,2,3,8,1,9] 最长区间 2,3,8 长度为 3

    class Solution:
    	def __init__(self) -> None:
    		pass
    	def solution(self, n, arr):
    		result = 1
    		t=1
    		for i in range(len(arr)-1):		
    			if arr[i]<arr[i+1]:
    				t+=1
    			else:
    				result=max(result,t)
    				t=1
    		result=max(result, t)
    		return result
    if __name__ == "__main__":
    	n = int(input().strip())
    	arr = [int(item) for item in input().strip().split()]
    	s = Solution()
    	result = s.solution(n, arr)
    	print(result)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    该题目耗费我时间比较多,开始写的一致是90%通过,有10%通不过,后来整体上换了,解决的。

    六、经验心得

    估计太菜,第一次参加,来来回回,估计被罚分不少,提交的也晚,哭晕了。

    • 1.要牢记基础知识,这次的map不记得key value等取值肯定搞不定;
    • 2.要多加练习,勤能补拙,后续的打榜一定要积极参加;
    • 3.一定要好好学习,绝对不能让小朋友超过;
    • 4.要注意规则,我刚开始还想要不要用vscode本地验证下,结果发现被警告了。

    七、资料分享

    python学习资料一大堆,我建议跟训练营比较好,特别是 datawhale等组队打卡,有监督有学习,特别棒。
    在此特别感谢CSDN组织活动,辛苦了!

  • 相关阅读:
    sklearn快速入门教程:处理连续型特征
    轻松学习string类常用接口(附模拟实现)
    基于javaweb的企业员工绩效工资管理系统(java+springboot+freemarker+mysql)
    ArcGIS制作某村土地利用现状图
    AutoSAR入门:应用背景及简介
    nydusd 源码理解(一)
    【样式】Html 卡片样式
    K8S:kubectl陈述式、声明式资源管理及金丝雀部署
    Java版企业电子招标采购系统源码—企业战略布局下的采购寻源
    【Java 进阶篇】Java Filter 执行流程及生命周期详解
  • 原文地址:https://blog.csdn.net/livingbody/article/details/126919094