24小时热门版块排行榜    

CyRhmU.jpeg
查看: 766  |  回复: 6

zhanglinfeng

新虫 (小有名气)

[求助] 思维不透,请牛人帮忙

编程实现
在1、2、3、4、5、6、7、8、9这一串数字中间,加入运算符号"+"或"-",使其代数和等于某个数。
例:当输入99,要输出1-23-4+56+78-9=99
1-23+45-6-7+89=99
1+2+34+56+7+8-9=99
1-2+34+56-7+8+9=99
1+23+4-5-6-7+89=99
1+23+4+5+67+8-9=99
1+23-4-5+67+8+9=99
1+23+45+6+7+8+9=99
12+3+4+5+6+78-9=99
12+3-4-5+6+78+9=99
12-3+4+5-6+78+9=99
12+3+4+56+7+8+9=99
1+2+3-4-5+6+7+89=99
1+2-3+4+5-6+7+89=99
1-2+3+4+5+6-7+89=99
1-2-3-4+5+6+7+89=99
1+2+3+4+5+67+8+9=99
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

baobiao007

木虫 (职业作家)

中国特色

看似简单,但感觉对于没专门学过 计算机算法  的人,应该蛮有难度的。
我同意叔本华的观点,人们投身艺术和科学领域的强烈愿望之一就是逃离痛苦、残酷和枯燥无味的现实生活,逃离自己飘忽不定的七情六欲的桎梏。--爱因斯坦
2楼2013-09-22 18:49:43
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

jerkwin

专家顾问 (正式写手)

【答案】应助回帖

感谢参与,应助指数 +1
没有好的算法啊, 只能暴力排列组合, 然后根据大小和条件进行取舍
3楼2013-09-22 20:53:16
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zhanglinfeng

新虫 (小有名气)

引用回帖:
3楼: Originally posted by jerkwin at 2013-09-22 20:53:16
没有好的算法啊, 只能暴力排列组合, 然后根据大小和条件进行取舍

假如那样的话,循环的次数就太多了,感觉不怎么好。
4楼2013-09-23 08:51:44
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zhanglinfeng

新虫 (小有名气)

引用回帖:
2楼: Originally posted by baobiao007 at 2013-09-22 18:49:43
看似简单,但感觉对于没专门学过 计算机算法  的人,应该蛮有难度的。

同感。
5楼2013-09-23 08:52:49
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

chyanog

金虫 (小有名气)

用C++做不如用脚本语言方便(如Python Ruby等),用Mathematica的话也非常简单,两行代码搞定
思维不透,请牛人帮忙
CODE:
Select[ToString@StringForm["1``2``3``4``5``6``7``8``9", ##] & [at=315114]@@[/at]
   Tuples[{"+", "-", ""}, 8], ToExpression[#] == 99 &] // Column

6楼2013-09-23 19:20:12
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

virtualzx

木虫 (著名写手)

【答案】应助回帖

感谢参与,应助指数 +1
1到9的话只有几千个组合而已,直接迭代或回溯都蛮快的。要到一列20个以上的数时才会计算量比较大的
7楼2013-09-24 04:35:25
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 zhanglinfeng 的主题更新
信息提示
请填处理意见