作者:林振萍俊諭 | 来源:互联网 | 2023-05-17 09:34
求出符合下面条件的5个正整数:
1、5个数之和为23
2、从这5个数中选取不同的数作加法,可以得1~23中的所有自然数,打印这5个数及选取组成的1~23
的加法式
13 个解决方案
既然5个数两两相加不超过23
那么这五个数肯定不超过22
那就5个for循环吧,反正也就22^5
这个题目太没有难度了!随便写5个数,比如:1,2,4,8,16其和就可以表示1~31之间的所有自然数.根据中学的数学知识知道,这样的数应该是an+1=2*an的等比数列,且第一项为1.
楼上,题目要求为:5个数之和为23,并且不是用单独的数表示1~23,是从中选取不同的作加法,其和可以表示1~23,你的意思和题的意思完全不同
用遍历法。5个数都是正整数,那么知道5个数中最大为19最小为1.
对前4个数进行遍历,从1取到19,第5个数用23减掉即得。然后对这五个数进行判断 看其是否能得1~23中的所有自然数。符合条件的打印
因为今天比较晚了,所以先给出我的答案(1,2,4,8,16),然后介绍一下我的思路,代码就不粘贴了。首先穷举肯定不是个明智的方法,问题可以这么解读:给定5个正整数,要求它能够组合出1——23间所有的自然数,并且满足它们之和为23。这样解读的话(假设5个数是不相同的),1必定在这5个数之中,因为要组合出1;2也必定在其中,因为要组合出2;3不在其中,因为1+2=3; 4在其中,因为1和2组合不出4;依次类推,如果用前面得到的正整数能够组合出正整数i,则i+1;否则,将i加入到要求解的正整数中,并判断是否满足当前所有正整数之后要小于23(添加最后一个正整数后之和等于23);
这种思路的难点就是要判断目前得到的正整数能否组合出当前的自然数i,这可以采用回溯的策略。
5个正整数中的任意两个相加怎么能得到1~23中的所有自然数啊,最小是1, 1 + 1 = 2 ;怎么能得到1呢??