有十个数,任取其中N个(N从1到10),使他们之和大于等于M,如何用C/C++编程求出所有组合并记录.
来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/07/19 18:35:12
有十个数,任取其中N个(N从1到10),使他们之和大于等于M,如何用C/C++编程求出所有组合并记录.
例如这十个数是1到10,M=15.
取两个的话有:5,10; 6,10;……等组合.
取三个有 1,4,10; 2,3,10;……等组合.
依次类推.
然后将所有组合存入一个数组中.
有没有高级点的算法,不是无脑for循环.10个数只是假设,如果10变成了100,或者更多如何编写,能不能有具体程序?
有i个数,任取其中N个(N从1到i),使他们之和大于等于M,如何用C/C++编程求出所有组合并记录.
例如这十个数是1到10,M=15.
取两个的话有:5,10; 6,10;……等组合.
取三个有 1,4,10; 2,3,10;……等组合.
依次类推.
然后将所有组合存入一个数组中.
有没有高级点的算法,不是无脑for循环.10个数只是假设,如果10变成了100,或者更多如何编写,能不能有具体程序?
有i个数,任取其中N个(N从1到i),使他们之和大于等于M,如何用C/C++编程求出所有组合并记录.
这个题目要求出并记录所有组合,所以for循环是省不了的,但是可以做到不无脑.
首先分析一下题目,设取出的N个数和为y,那么可以得出:
y的最大值为 i+(i-1)+(i-2)+···+(i-N+1)
进行检定:如果y的最大值小于M,那么无解;否则,y的最大值肯定满足条件,使用for循环,依次逐渐减小N个数的值,直至y=M,则输出了所有解.
代码我就不写了,算法如上,再举例说明一下最后中情况for循环的思路,就拿楼主的例子说明:
“十个数,从1到10,M=15,N=3”
首先,10、9、8必然满足条件,将第三个数从8开始减小,一直到1都满足条件;
然后,减小第二个数,起始为10、8、7,再将第三个数从7开始减小,一直到1都满足条件;
···
最终当循环到6、5、4时,再减小将不满足条件,输出完毕.
还有什么疑问,再追问
首先分析一下题目,设取出的N个数和为y,那么可以得出:
y的最大值为 i+(i-1)+(i-2)+···+(i-N+1)
进行检定:如果y的最大值小于M,那么无解;否则,y的最大值肯定满足条件,使用for循环,依次逐渐减小N个数的值,直至y=M,则输出了所有解.
代码我就不写了,算法如上,再举例说明一下最后中情况for循环的思路,就拿楼主的例子说明:
“十个数,从1到10,M=15,N=3”
首先,10、9、8必然满足条件,将第三个数从8开始减小,一直到1都满足条件;
然后,减小第二个数,起始为10、8、7,再将第三个数从7开始减小,一直到1都满足条件;
···
最终当循环到6、5、4时,再减小将不满足条件,输出完毕.
还有什么疑问,再追问
有十个数,任取其中N个(N从1到10),使他们之和大于等于M,如何用C/C++编程求出所有组合并记录.
如何用C语言编程“输入n个整数,求其中最大数及其所在的位置,并求出此n个数中素数的个数.”
c语言:从键盘任意输入一个整数n,编程计算并输出1-n之间的所有素数之和
2.一道c语言题 输入两个整数 n 和 m,从数列1,2,3.n 中 随意取几个数,使其和等于 m ,要求将其中所有的可
c语言编程问题,计算出从n 个不同元素中取出m 个元素(m≤n)的组合数。编写程序
有一个正整数组,包含n个元素,要求编程求出其中所有素数之和以及所...
c语言:编程实现求1+2+3+…+n之和,并输出当其和第一次大于或等于100时的值及n值.
编程实现求1+2+3+.+n之和,并输出当其和第一次大于或等于100时的值及n值.用c语言.
C语言编程求解1到n之间所有素数之和
/* 计算正整数n所有因子(1和n除外)之和.(用C语言编程)
C语言递归做一个题目数的组合问题.从1,2,…,n中取出m个数,将所有组合按照字典顺序列出.如n=3,m=2时,输出:1
根据组合公式可以计算出从n个不同元素取出m 个元素的组合数,用C语言编写程序,输入2个正整数m和n,计算并输出组合数,要