码迷,mamicode.com
首页 > 其他好文 > 详细

算24 程序设计题

时间:2020-03-27 17:07:49      阅读:74      评论:0      收藏:0      [点我收藏+]

标签:cell   提示信息   程序设计   pre   color   style   end   tools   exit   

算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 程序设计题

标签:cell   提示信息   程序设计   pre   color   style   end   tools   exit   

原文地址:https://www.cnblogs.com/slj-xt/p/12582344.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!