更多> 爱好> 只是为了好玩

JAVA新手,问一个想很久的问题

长风豆捞 2019-08-21 14:13:35

我是一个才刚学JAVA不到半年的新手,想问一个困惑我很久的问题.....
这个问题是我在网上看到的,本以为自己可以轻松解决,结果却解不出来!?
问题是:
8个数字相加等于100,请把方法总数与数列列出来。(可重复)
恳请大大解惑。

评论(6)
梦境之声 2019-08-21 14:35:44 1

1、先用手算,理出头绪
2、开始用电脑整理
3、Callout

终爱一生 2019-08-21 14:41:11 2

我的想法是土法炼钢,把所有组合用for跑出来,判断等于100后印出来!

月色如秋 2019-08-21 14:46:36 3

首先,先要能解,土法炼钢也是一种方法,再来改善
从已解出的答案或解题方式,找出适合此题目的规律,从规律中着手优化,改善原本方式
如果连土法炼钢都解不出来,表示还没有办法理解题目所想要表达的运算规则,需求不明确就无法进行解题,更难以说要改善
先描述自己的想法、解法及所得结果,再寻求别人的建议,经过了自己亲手实作,从错误中学习到经验,加上别人给的建议,才能真正有效的学习,否则只是纸上谈兵,仅用空想,对学习的帮助很有限....

箭枫穿心 2019-08-21 14:51:59 4

先在纸本上列出自己想到的可能性数列,慢慢就会规画出规则,这时候才转换成程式码,如果连第一步在纸本列出可能的数列都举不出来,是不太可能凭空编写出程式码的

冬日暖阳 2019-08-21 14:57:20 5

这问题居然还只停留在forloop的阶段...
这问题的解法有点像著名的[8个皇后],只是简单很多,其中一种解法就是先列出一个已知解,然后再慢慢改变它找出其它的解
所以我们首先列出一个已知解
1、1、1、1、1、1、1、93
然后用最小的改变找出下一个解
1、1、1、1、1、1、2、92
1、1、1、1、1、1、3、91
...
1、1、1、1、1、1、46、48
1、1、1、1、1、1、47、47

凡事看淡 2019-08-21 15:02:39 6

一般来讲用土法练钢的方式虽然也可以得到答案
但速度上就会慢了许多
八个数相加要等于100
也可以解析成两个数字相加等于100(假设这两个数字各为四个数字的总和)
比如n1+n2+n3+n4+n5+n6+n7+n8=100
所以设
m1=n1+n2+n3+n4
m2=n5+n6+n7+n8
所以m1>=4,m2>=4
且m1<=96,m2<=96
但为了节省时间起见
所以也可以把条件改为m1<=50,m2<=50

评论前需先登录。