原题链接:石头剪刀布
解题思路:
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、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复