注册 登录
编程论坛 C++教室

[讨论]一道高难题目,请大家探讨探讨

ioriliao 发布于 2007-06-28 11:42, 2438 次点击
题目说明:
输入任意个整数,最后输入一个结果数(整数),然后求出输入的任意个整数任意四则运算组合等于输入的结果数
例如:输入任意个整数: 2,2,2
输入结果数: 6
那么输出: 2*2+2=6
2+2+2=6

题目是自己想出来的,但我没有答案,因为想不出来怎么做,大家看看如何咯.
谢谢.
31 回复
#2
游乐园2007-06-28 12:09
怎么像算24点  
#3
ioriliao2007-06-28 12:13
不像算24点,算24点的取数是从一到十三而且只有一个固定的24作为结果数,但我这题目是任意个数的,
像可随便输入任意个数字及任意的数值,最后输入任意一个结果数.

[此贴子已经被作者于2007-6-28 12:16:42编辑过]

#4
aipb20072007-06-28 12:28
果然很难,有可能做出来吗?

看看!
#5
游乐园2007-06-28 13:03

嗯 有难度

任意个数字间的顺序在运算的时候是可以打乱的吧
比如 输入 2 4 6 和结果 16
2*6+4 = 16

#6
ioriliao2007-06-28 13:09
输入的顺序是任意的,像可以输入:1 2 3 也可以像这样 2 1 3
反正一句话,任何输入的数字是随意的(包括数字个数,数值,顺序)
#7
aipb20072007-06-28 13:46
这个:

人工智能吗?要用代码让计算机像人一样思考,太难了吧!

哈哈~
#8
ioriliao2007-06-28 14:08

不知道这是否算不算是人工智能,真的有这么难吗,一点头绪都没有吗?
我就是一点头绪都没有

#9
juka2007-06-28 14:14
回复:(ioriliao)[讨论]一道高难题目,请大家探讨探讨...
[讨论]一道高难题目,请大家探讨探讨题目说明:
输入任意个整数,最后输入一个结果数(整数),然后求出输入的任意个整数任意四则运算组合等于输入的结果数
例如:输入任意个整数: 2,2,2
输入结果数: 6
那么输出: 2*2+2=6
2+2+2=6

我的思路:(没有加括号的情况)
1》设有n个数字,对n个数字进行全排列,有n!种
2》对于每一种数字排列,再从+,-,*,/,取(n-1)个(允许重复取),有4^(n-1)种

总共有n!*4^(n-1)种组合.

不知说清没有...

初次发贴,见笑了...

[此贴子已经被作者于2007-6-28 14:22:06编辑过]

#10
ioriliao2007-06-28 14:43
对了,包括括号的!
#11
xq07142007-06-28 18:58

LZ所说的这样的整数列是不存在的 !你说的是任意的四则运算!
可以证明的是当有两个整数时,显然是不满足这样的要求的 !
用反证法可以证明当有3个整数时也是不成立的,由此证明是不存在的 !同理证明其他的个数!
可能LZ要表达的意思是存在两个或者两个以上的四则运算使他们的结果相同吧!
那只需要证明当是两个整数的情况下,这样的整数列有多少个,因为只要有一对满足这样要求的整数就可以生成
3个满足这样要求的整数!就想证明歌德巴赫猜想一样,缩小其范围!
我们知道加法和乘法都有交换律,所以一个N个数相加或者相乘,一共有N!个不同的组合!
除了相加或者相乘,其他的是不成立的 ,因为在2个数的情况下满足这样要求的整数对是有限的 !

#12
ioriliao2007-06-28 19:31

楼上仁兄说的我不是很明白,能否写个清楚的证明我看看呢.


#13
野比2007-06-28 19:59

可以让程序判断输入数据是否能生成目标数...
看看这样如何?
先获得输入序列 如a (N个数)
然后令b = 1/a (倒数序列)
令c = -a (相反数序列)

最后对a,b,c三个序列的所有元素进行加法/乘法的排列组合(排除数字重复的情况)
这样得到的结果就是四则运算的结果..

如果不能得到, 输出"不可解"...

没时间验证这个思路, 希望各位指正..

#14
ioriliao2007-06-29 11:30
有人写出代码了吗,写出了一定要贴上来看看哦!
#15
hoholine20072007-06-29 19:18
   现在在思考之中..先mark..
#16
野比2007-06-29 20:53
忙死了...有人写出来麻烦告诉我..3q..
#17
ioriliao2007-07-01 21:06
- -! 还没有人做出来么?我等到花儿也谢了
#18
野比2007-07-01 22:41
MS都没有时间...
#19
ioriliao2007-07-02 10:55
野比兄最近忙什么项目呢?
#20
ioriliao2007-08-31 20:52
偶期待了很久了,乍地还没有答案呢,自己又想不出来,,,,
#21
雨中飞燕2007-08-31 22:49
5个以内用穷举,10个以内dfs加剪枝,超过10个就贪心



by 雨中飞燕 QQ:78803110 QQ讨论群:5305909

[url=http://bbs.bc-cn.net/viewthread.php?tid=163571]请大家不要用TC来学习C语言,点击此处查看原因[/url]
C/C++算法习题(OnlineJudge):[url]http://yzfy.org/[/url]

[此贴子已经被作者于2007-8-31 22:51:02编辑过]

#22
mp3aaa2007-09-01 00:08

对了问你们个问题啊
实际工作中不会出现这种问题吧?

#23
冰的热度2007-09-01 14:48
核心代码中一定有排列组合的算法,看看我的贴子<<排列组合算法>>,

如果你能看懂,再往下想,如果连这个算法都看不懂,估计没戏了
#24
编程午夜新人2007-09-02 00:30
各位大虾好强哟。         路过。!!
#25
leeco2007-09-02 00:46
回复:(ioriliao)[讨论]一道高难题目,请大家探讨探讨...
枚举啊。对后缀表达式枚举就不用考虑括号了
#26
zptk7202007-09-02 12:36

还有括号
不会啦

#27
ioriliao2007-09-04 15:48

别光说,就发个具体的源码上来看看实现得如何!

#28
xjlsgcjdtc2007-09-04 23:53
回复:(juka)回复:(ioriliao)[讨论]一道高难题目...

关键人家是要通过结果求过程,输出结果是自己给的!
只能用人工智能,不过我不会

#29
HJin2007-09-05 07:33

burte force is an applicable way, but it takes O(e^n) time.

As Yu3Zhon2gFei1Yan4 said we may need some graph algorithm here for a polynomial time soln.

#30
whjadr2007-09-05 10:37

好难呀,都看不大懂呀

#31
ioriliao2007-09-07 17:07
以下是引用HJin在2007-9-5 7:33:57的发言:

burte force is an applicable way, but it takes O(e^n) time.

As Yu3Zhon2gFei1Yan4 said we may need some graph algorithm here for a polynomial time soln.

我E文太差了,谁能帮我解释下,谢谢.....

#32
cince2007-09-07 23:06



人工智能。。。不知道有谁做出来了?

比24点还难。

用傻子的方法:

枚举法吧。

嘻嘻
1