题解 | #24点运算#

24点运算

http://www.nowcoder.com/practice/7e124483271e4c979a82eb2956544f9d

制造全排列

res = []

def get_all_possibility(left, a): if len(left) == 4: res.append(left[:]) return for aa in a: if aa not in left: left.append(aa) get_all_possibility(left, a) left.pop()

res_1 = [] def change_str(e): if e == '13': return 'K' elif e == '12': return 'Q' elif e== '11': return 'J' elif e == '1': return 'A' else: return e

获取结果

def get_res(u, sum_all, index, calculation): if index == 4: if sum_all == 24: res_1.append(calculation) return if index == 0:

    get_res(u, u[index], index + 1, change_str(str(u[index])))
else:
    get_res(u, sum_all + u[index], index + 1, calculation + '+' + change_str(str(u[index])))
    get_res(u, sum_all - u[index], index + 1, calculation + '-' + change_str(str(u[index])))
    get_res(u, sum_all * u[index], index + 1, calculation + '*' + change_str(str(u[index])))
    get_res(u, sum_all // u[index], index + 1, calculation + '/' + change_str(str(u[index])))

while True: try: a = input().strip().split() if 'joker' in a or 'JOKER' in a: print('ERROR') continue get_all_possibility([], [0, 1, 2, 3]) choice = [] # print(res) for r in res: m = [] for i in r: if a[i] == 'K': m.append(13) elif a[i] == 'Q': m.append(12) elif a[i] == 'J': m.append(11) elif a[i] == 'A': m.append(1) else: m.append(int(a[i])) if m not in choice: choice.append(m) for c in choice: get_res(c, 0, 0, '') if len(res_1) >= 1: print(res_1[0]) break # print(res_1) if len(res_1) == 0: print('NONE') except EOFError: break

全部评论

相关推荐

一个菜鸡罢了:哥们,感觉你的简历还是有点问题的,我提几点建议,看看能不能提供一点帮助 1. ”新余学院“别加粗,课程不清楚是否有必要写,感觉版面不如拿来写一下做过的事情,教育经历是你的弱势就尽量少写 2. “干部及社团经历”和“自我评价”删掉 3. 论文后面的“录用”和“小修”啥的都删掉,默认全录用,问了再说,反正小修毕业前肯定能发出来 4. 工作经验和研究成果没有体现你的个人贡献,着重包装一下个人贡献
点赞 评论 收藏
分享
10-09 19:35
门头沟学院 Java
洛必不可达:java的竞争激烈程度是其他任何岗位的10到20倍
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务