PTA【乙级】1018-锤子剪刀布

PTA【乙级】1018-锤子剪刀布

题目链接

翻车的一道题。再问身边的朋友怎么优化算法(除了用定义函数的方法吧)
一开始用max()比较大小,一直三个测试点过不去,感觉是应该有赢数相等的两个结果。
先是一开始的代码(三个测试点没过):

--------------------
num = int(input())
a1=a2=a3=0
b1=b2=b3=0
c=0
for i in range(num):
    x = input().split()
    if x[0]=='B' and x[1]=='C':
        a1=a1+1
    elif x[0]=='C' and x[1]=='B':
        b1=b1+1
    elif x[0]=='C' and x[1]=='J':
        a2=a2+1
    elif x[0]=='J' and x[1]=='C':
        b2=b2+1
    elif x[0]=='B' and x[1]=='J':
        b3=b3+1
    elif x[0]=='J' and x[1]=='B':
        a3+=1
    else:
        c=c+1
print(a1+a2+a3,c,b1+b2+b3)
print(b1+b2+b3,c,a1+a2+a3)

ping1 = max(a1,a2,a3)
ping2 = max(b1,b2,b3)
if ping1 == a1:
    q='B'
elif ping1 ==a2:
    q='C'
else:
    q='J'

if ping1 == b1:
    p='B'
elif ping1 ==b2:
    p='C'
else:
    p='J'
print(q,p)
-----------------

后来发现就应该是有a1=a2 或者其他相等的情况。

改成就正常的if比较


num = int(input())
a1=a2=a3=0
b1=b2=b3=0
c=0
for i in range(num):
    x = input().split()
    if x[0]=='B' and x[1]=='C':
        a1=a1+1
    elif x[0]=='C' and x[1]=='B':
        b1=b1+1
    elif x[0]=='C' and x[1]=='J':
        a2=a2+1
    elif x[0]=='J' and x[1]=='C':
        b2=b2+1
    elif x[0]=='B' and x[1]=='J':
        b3=b3+1
    elif x[0]=='J' and x[1]=='B':
        a3+=1
    else:
        c=c+1
print(a1+a2+a3,c,b1+b2+b3)
print(b1+b2+b3,c,a1+a2+a3)

ping1 = max(a1,a2,a3)
ping2 = max(b1,b2,b3)
if a1>=a2 and a1>=a3:
    q='B'
elif a2>=a1 and a2>=a3:
    q='C'
else:
    q='J'

if b1>=b2 and b1>=b3:
    p='B'
elif b2>=b1 and b2>=b3:
    p='C'
else:
    p='J'

print(q,p)

第五个测试点超时,好像我查了下,好像这个点很多用python的都超市了,唯一一个没超时的使用def做的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值