大家都玩过扑克牌(A,2,3…T,J,Q,K),我们使用T来表示10,且A取值1,J取值11,Q取值12,K取值13,你的任务是判断给定四张牌,能否通过加减乘除四种运算,使得最后的结果是24。
若四张牌为A、5、8、J,则可以这么计算5+J+(A*8)=24。
解答要求时间限制:5000ms, 内存限制:64MB
输入
输入四个字符表示四张牌(A,2,3…T,J,Q,K),用空格隔开。输入到文件末尾结束。
输出
若能计算出24,输出"Yes”,否则输出"No"。
样例
输入样例 1 复制
A 5 5 5 A A A A
输出样例 1
Yes No
解题思路:
开始看到这个题目的时候,很自然的想到了将所有的情况都进行考虑然后将一些明显不符合的情况删除从而进行剪枝,但是这样还是比较复杂。后来看到了别人好的思路,从输入中随机选择两个数据进行加减乘除运算然后将结果和剩余的数一起再次计算,通过不断的递归最后得出结果。AC的Python代码如下:
def func(): dic = {'A': 1, 'T': 10, 'J': 11, 'Q': 12, 'K': 13} while True: try: data = list(map(str, input().strip().split())) for i in range(len(data)): if dic.get(data[i]):