算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 程序设计题的主要内容,如果未能解决你的问题,请参考以下文章

多个用户访问同一段代码

P1236 算24点

Python练习册 第 0013 题: 用 Python 写一个爬图片的程序,爬 这个链接里的日本妹子图片 :-),(http://tieba.baidu.com/p/2166231880)(代码片段

LQ0189 等额本金填空题

北京大学 程序设计与算法 递归 算24

网络流24题太空飞行计划问题(网络流)