题目:
正整数N是M个正整数之和,M比N小,且不重复。例如,N=20,M=5,N可以表示成为
1+2+3+4+10 = 20
1+2+3+5+9 = 20
1+2+3+6+8 = 20
1+2+4+5+8 = 20
1+2+4+6+7 = 20
1+3+4+5+7 = 20
2+3+4+5+6 = 20
Total:7
思路:
先确定第一个数是a,然后找出M-1个数的和为N-a
代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int data[100];
int num = 0;
void output(int total)
{
for(int i = total;i > 0; i--)
{
printf("%d ", data[i]);
}
printf("\n");
num++;
}
void findComb(int total, int count, int sum, int begin)
{
if( count < 0 )
{
printf("error\n");
return;
}
else if( count == 1 )
{
data[count] = sum;
output(total);
return;
}
else
{
for(int i = begin; i <= (sum-1)/count; ++i )
{
data[count] = i;
findComb(total, count-1, sum-i, i+1);
}
}
}
int main()
{
findComb(5, 5, 20, 1);
printf("Total: %d\n", num);
system("PAUSE");
return 0;
}
分享到:
相关推荐
计算机编程题目:判断输入的任何一个正整数n,是否等于某个连续正整数序列之和。(要求多次输入直到碰到输入的数字小于1时程序退出。) C++语言编写的代码
整数划分问题是一种经典的组合数学问题,主要研究如何将一个正整数表示为若干个正整数之和的方式。在本问题中,我们需要找到一个正整数\( n \)的所有可能的划分方式,并计算出这些划分的数量。具体来说,对于一个正...
整数因子分解问题 大于1 的正整数n可以分解为:n=x1*x2*…*xm。 例如,当n=12 时,共有8 种...第一行有1 个正整数n (1≤n≤2000000000)。 Output 将计算出的不同的分解式数输出 Sample Input 12 Sample Output 8
输入两个正整数m和n,求其最大公约数和最小公倍 数。
给定一个整数n,求出所有连续的且和为n正整数。比如对于整数27,结果为2~7、8~10、13和14,因为这些数之间的整数的和都是27。注意:并不是所有的整数都有结果,例如不存在连续的整数和为16。为了提高计算的效率,...
辗除法是计算最大公约数的一种有效方法,它的基本思想是:对于任意两个正整数a和b(假设a>b),它们的最大公约数等于a除以b的余数c和b之间的最大公约数。如果余数为0,则b就是最大公约数;如果不为0,就继续对b和...
例如,给定一个正整数\( n \),我们需要找出所有可能的形式 \( n = X_1 \times X_2 \times \ldots \times X_m \),其中 \( X_i \) 也是正整数。 在本题中,我们特别关注的是找到给定正整数的所有不同的分解方式的...
输入两个正整数m和n,求其最大公约数和最小公倍数输入两个正整数m和n,求其最大公约数和最小公倍数输入两个正整数m和n,求其最大公约数和最小公倍数输入两个正整数m和n,求其最大公约数和最小公倍数输入两个正整数m...
Java练习题:输入两个正整数m和n,求其最大公因数和最小公倍数
欧几里得算法是一种高效求解最大公约数的方法,它基于以下原理:两个正整数a和b(假设a>b),它们的最大公约数等于b和a对b取模后的余数的最大公约数。这个过程可以不断重复,直到其中一个数为0,此时另一个非零数即...
对于给定的n位正整数a 和正整数k,设计一个算法找出剩下数字组成的新数 最小的删数方案。 «编程任务: 对于给定的正整数a,编程计算删去k个数字后得到的最小数。 Input 由文件input.txt提供输入数据。文件的第1...
把一个包含n个正整数的序列划分成m个连续的子序列,每个整数刚好属于一个序列。设第i个序列的各数之和是S(i)。要求:让所有的S(i)的最大值尽量小。例如:序列1,2,3,2,5,4划分成3个序列的最优方案为123|25|4,...
C语言程序设计-求给定正整数n以内的素数之积;(n).c
在本题目中,我们需要编写一个C语言程序,用于计算从1到给定正整数N之间所有整数中数字"1"出现的总次数。这是一个典型的字符串处理和数学计算问题,涉及到了数字转换、字符串遍历以及计数算法。下面我们将深入探讨这...
43. **数列求和**:找到满足条件的最大n,然后计算数列之和。 44. **筛选特定数列**:使用循环过滤出不满足条件的数。 45. **Fibonacci数列**:递归或迭代计算Fibonacci数列的前40项。 46. **密码加密**:根据...
完数是指一个整数恰好等于它的因子之和(除自身外),则称这个数为完数。从键盘先后输入两个不大于9999的正整数m和n,若m>n,则交换两数。然后求m~n(m和n均为正整数且m≤n)之间的所有完数。 【输入形式】 先后...
在这个编程问题中,我们需要实现一个程序来处理一个正整数,按照特定的规则生成一系列新的整数,并将它们按升序排列输出。这个问题涉及到的主要知识点包括C++编程、一维数组的操作、冒泡排序算法以及输入输出的处理...
编程求解:输入两个整数 n 和 m,从数列 1,2,3.......n 中随意取几个数,使其和等于m ,要求将其中所有的可能组合列出来。
使用递归 :-------------输入给出正整数n,输出1到n的全排列,排列的输出顺序为字典序,每种排列占一行,数字间无空格,
7-5就区间正整数内所有素数之和 (20分) 【描述】求m-n以内所有素数之和并输出。...