33,311
社区成员
发帖
与我相关
我的任务
分享
#include "stdio.h"
int num[10];
//保存分解式
void huafen(int m, int n, int k) // m表示待划分的数,n表示可用的最大的数,k表示已经分解的个数。
{
int i;
if(m == 0)
{
for(i = 0; i < k; i++)
printf("%d ",num[i]);
printf("\n");
return;
}
for(i = m>n?n:m; i >= 1; i--)
{
num[k] = i;
huafen(m-num[k],num[k],k+1);
// 递归调用对剩下的数进行分解,最大的分解数为num[k] , 以保证分解的数由大到小,防止消除重复的分解。
}
}
int main()
{
int m,n,k;
huafen(6,6,0);
return 0;
}