这道题实在算不上【较难】,主要是题目数据把复杂的情况全部屏蔽了。
可能可以说得上难的点在于理解题意吧,只要把【类型相同】转化为【长度相同】,这道题就非常简单了。
#思路:大模拟,注意细节 #不知道题目的意思是不是每手牌只由一种牌型组成,比如33344这种算不算合法牌型, #因为5张里面包含了两种牌型,如果这种不合法的话就很简单了,直接判断长度, #长度相等的一定是相同牌型,直接比第一个元素大小就行了 #先按这种简单的方式试试 std="3 4 5 6 7 8 9 10 J Q K A 2 joker JOKER".split()#标准大小 #输入 s=input().split('-') a=s[0].split() b=s[1].split() #判断函数 def check(a,b):#a,b为列表 global s #特殊判断有无炸弹 #任意一方有对王 if ("joker" in a and "JOKER" in a) or ("joker" in b and "JOKER" in b):#a有对王 return "joker JOKER"#这里有可能有问题,万一输入的是大王小王,而不是小王大王 #两边都是炸弹 elif len(a)==4 and len(b)==4:#只要长度为4,就是炸弹,因为输入合法 if std.index(a[0])>std.index(b[0]):#a大 return s[0] else: return s[1] #只有一边是炸弹并且没有王炸 elif len(a)==4 or len(b)==4: if len(a)==4: return s[0] else: return s[1] #没有炸弹,检查类型是否相同 #长度相同 elif len(a)==len(b): #直接比第一个元素大小 if std.index(a[0])>std.index(b[0]):#a大 return s[0] else: return s[1] #长度不同 else: return "ERROR" print(check(a,b)) #过了,说明这题真的很简单,从输入保证了一手牌不会由两种牌型组成 #实际上【类型相同】在这里等同于【长度相同】,所以判断细节就少了很多