原题链接:石头剪刀布
解题思路:
1、本题如何用数字表达石头剪刀布之间的获胜规则:如石头对剪刀 石头胜,剪刀对布 剪刀胜,布对石头 布获胜。(本题采用数值小的一方获胜)
2、如何运用循环将出拳的规律表达出来。
3、石头对布的取胜规则不符合(1、....)中的想法,所以采用if语句对此情况设立特殊的取胜规则。
注意事项:
1、(l += 1) 和 (h += 1) 不能放在之后的if语句的后面,不然将无法进行正确的循环。
参考代码:
n, a_cycle, b_cycle = map(int, input().split()) #用将猜拳次数和A、B的猜拳周期读入 a_law = [int(i) for i in input().split()] #将A的猜拳规律读入 b_law = [int(i) for i in input().split()] #将B的猜拳规律读入 A, B, l, h = 0, 0, 0, 0 #用A、B记录获胜的次数,用l、h记录A、B的猜拳次数 for i in range(n): #进行n次循环 if a_law[l] == b_law[h]: #当A、B数值一样,A、B数值不变 A = A B = B elif a_law[l] < b_law[h]: #当A<B时,有两种情况 if a_law[l] == 0 and b_law[h] == 5: #1、当A出拳,B出布时,B获胜 B += 1 else: #2、其他情况,A获胜 A += 1 else: #当B<A时,有两种情况 if a_law[l] == 5 and b_law[h] == 0: #与上述同理 A += 1 else: B += 1 l += 1 #每循环一遍增加一次猜拳的次数 h += 1 if l > a_cycle-1: #当猜拳的次数超过猜拳周期,令l=0,重新按照猜拳规律出拳 l = 0 if h > b_cycle-1: #与上述同理 h = 0 if A > B: #最后进行比较,输出胜者 print('A') elif B > A: print('B') else: print("draw")
0.0分
1 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复