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做的。