算24 程序设计题
Posted slj-xt
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了算24 程序设计题相关的知识,希望对你有一定的参考价值。
算24
描述
给出4个小于10的正整数,可以使用加、减、乘、除4种运算以及括号把4个数连接起来得到一个表达式。现在问题是,是否存在一种方式使得所得表达式的结果等于24。????????????????????????????????????????????????????????????????????????????????????????????????
这里加、减、乘、除以及括号的运算结果和运算优先级跟平常定义一致。????????????????????????????????????????????????????????????????????????????????????????????????
例如,对于5,5,5,1,可知5×(5-1/5)=24。又如,对于1,1,4,2无论如何都不能得到24????????????????????????????????????????????????????????????????????????????????????????????????
????????????????????????????????????????????????????????????????????????????????????????????????输入格式
在代码中的输入部分输入4个小于10的正整数。输入使用input(),不要增加额外的提示信息。????????????????????????????????????????????????????????????????????????????????????????????????
输出格式
对于每一组测试数据,输出一行,如果可以得到24,输出"YES"其算法;否则“NO”。????????????????????????????????????????????????????????????????????????????????????????????????
????????????????????????????????????????????????????????????????????????????????????????????????输入输出示例
????????????????????????????????????????????????????????????????????????????????????????????????
输入 | 输出 | |
示例 1 |
5???????????????????????????????????????????????????????????????????????????????????????????????? 5???????????????????????????????????????????????????????????????????????????????????????????????? 5???????????????????????????????????????????????????????????????????????????????????????????????? 1???????????????????????????????????????????????????????????????????????????????????????????????? |
YES ((5-(1/5))*5) |
示例2 |
1???????????????????????????????????????????????????????????????????????????????????????????????? 1???????????????????????????????????????????????????????????????????????????????????????????????? 1???????????????????????????????????????????????????????????????????????????????????????????????? 1???????????????????????????????????????????????????????????????????????????????????????????????? |
NO |
from itertools import permutations n1 = input("") n2 = input("") n3 = input("") n4 = input("") n = n1+n2+n3+n4 sum = 1 for i in n: sum *= eval(i) if sum < 24: print("NO") exit() notation = [‘+‘, ‘-‘, ‘*‘, "/"] st = set() num = 0 number = set(permutations(n)) for i in notation: s = i t1 = notation.copy() t1.remove(i) for j in t1: s += j t2 = t1.copy() t2.remove(j) for p in t2: s += p st.add(s) s = i+j s = i newst = set() for i in number: for j in st: newst.add(i[0]+j[0]+i[1]+j[1]+i[2]+j[2]+i[3]) # print(newst) all = set() for i in newst: i1 = ‘(‘+i[0:3]+‘)‘+i[3:] i2 = i[0:2]+‘(‘+i[2:5]+‘)‘+i[5:] i3 = i[0:4] + ‘(‘ + i[4:] + ‘)‘ i4 = ‘((‘+i[0:3]+‘)‘+i[3:5]+")"+i[5:] i5 = i[0:2]+‘((‘+i[2:5]+‘)‘+i[5:]+")" i6 = ‘(‘ + i[0:2] + ‘(‘ + i[2:5] + ‘))‘ + i[5:] i7 = i[0:2]+‘(‘+i[2:4]+‘(‘+i[4:]+"))" all.add(i1) all.add(i2) all.add(i3) all.add(i4) all.add(i5) all.add(i6) all.add(i7) result = [] for i in all: try: if eval(i) == 24: result.append(i) except: pass print("YES") print("("+sorted(result)[0]+")")
以上是关于算24 程序设计题的主要内容,如果未能解决你的问题,请参考以下文章
Python练习册 第 0013 题: 用 Python 写一个爬图片的程序,爬 这个链接里的日本妹子图片 :-),(http://tieba.baidu.com/p/2166231880)(代码片段