有十个数,任取其中N个(N从1到10),使他们之和大于等于M,如何用C/C++编程求出所有组合并记录.例如这十个数是1到10,M=15.取两个的话有:5,10; 6,10;……等组合.取三个有 1,4,10; 2,3,10;……等

来源:学生作业帮助网 编辑:作业帮 时间:2024/04/29 09:19:00
有十个数,任取其中N个(N从1到10),使他们之和大于等于M,如何用C/C++编程求出所有组合并记录.例如这十个数是1到10,M=15.取两个的话有:5,10; 6,10;……等组合.取三个有 1,4,10; 2,3,10;……等

有十个数,任取其中N个(N从1到10),使他们之和大于等于M,如何用C/C++编程求出所有组合并记录.例如这十个数是1到10,M=15.取两个的话有:5,10; 6,10;……等组合.取三个有 1,4,10; 2,3,10;……等
有十个数,任取其中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++编程求出所有组合并记录.

有十个数,任取其中N个(N从1到10),使他们之和大于等于M,如何用C/C++编程求出所有组合并记录.例如这十个数是1到10,M=15.取两个的话有:5,10; 6,10;……等组合.取三个有 1,4,10; 2,3,10;……等
这个题目要求出并记录所有组合,所以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个(N从1到10),使他们之和大于等于M,如何用C/C++编程求出所有组合并记录.例如这十个数是1到10,M=15.取两个的话有:5,10; 6,10;……等组合.取三个有 1,4,10; 2,3,10;……等 请用抽屉原理解答下列各题.1.证明从1到20这20个数中,任取11个数,必有两个数,其中一个数是另一个数的倍数.2.证明:在任取得5个自然数中,必有3个数,它们的和是3的倍数.3.某校校庆,来了n位校 从1到30这30个正整数中,任取3个,N为取到的3个数的和能被3整除的取法,N=?从1到30这30个正整数中,任取3个,N为取到的3个数的和能被3整除的取法N=? 从1到30这30个正整数中,任取2个,N为取到的2个数的和能被2整除 从1,2..100这一百个数中,任取两个不同的数相乘,其中积能被5整除的有多少个?能被5整除但不能被5n(n(n≥2,n从1,2,3,……,100这一百个数中,任取两个不同的数相乘,其中积能被5整除的有多少个?能被5 pascal题:取数,求代码!有n个数(2≤n≤100),排成一排,从n个数中任取若干个数,取数规则为每次取相邻的2个数,不能取1个,也不能取多于2个连续的数,找一种取法,使取得的数的和为最大.例如:n= 求证:从1~3n之间任取n+2个数,其中必有两数之差的绝对值在[n,2n]之间. 有2n个数,其中n个0,n个1.随机排成一行,求没有两个1连在一起的概率.(n+1)(n!)(n!)/(2n!) 或(n+1)/(2n)C(n) 从1000-2010这1011个数中,任取n个不同的数,若其中必有2个数,其各位数字之和相等,则n的最小值是几? 从1到30这30个正整数中,任取3个,N为取到的3个数的和能被3整除的取法N=? 从1,2,3,4,…,15,16这十六个自然数中,任取出n个数,其中必有这样的两个数:一个是另一个的3倍,则n最小是多少. 从10到20这11个自然数中,任取7个数,证明其中一定有两个数之和是29. 从集合M{m,n}到集合N{1,2}可以建立映射的个数为()个 有一列数:1,2,3,4,5,6,…,m,…,n.当按顺序从第m个数数到第n个数(n大于m)时,共数了多少个数 高分请教高中数列题,高手请进 在线等从0,1,2,3……9这十个数中不放会地随机取N(N大于等于2小于等于10)个数,能排成N位偶数的概率为P(N),则数列{P(N)}为1等比非等差2等差非等比3等比等差 如图,数轴上有2n+1个点,他们所对应的整数是-n,-(n-1),…,-2,-1,0,1,2,……,n-2,n-1,n.为了确保从这些点中可以任取2006个,而且其中任何两点之间的距离都不等于4,求n的最小值 求(n+1)x^n的和函数,其中n从1到无穷大 任取N+1个自然数,其中必定有两个自然数的差是N的倍数,为什么