解题思路:

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.0分

1 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 3 条评论

23大数据赵恒卓 10月前 回复TA
当初才学python写的,现在看确实写的太复杂了。
23大数据赵恒卓 10月前 回复TA
@康贰什 我这个是有个大条件的就是a_law[l] < b_law[h],所以不会都是剪刀,a是剪刀a_law[l]=2,b是石头 b_law[h]=0不符合条件
康贰什 10月前 回复TA
#2、其他情况,A获胜
为什么呀,如果都是剪刀的话平局呀,或者a是剪刀,b是石头,b就赢啊,这怎么对的呀