#include <stdio.h>
int a[100]={0};
void shuchu(int m)
{
int i;
for(i=0;i<=m-1;i++)
printf("%d ",a[i]);
printf("\n");
}
void fenjie(int n,int m) //n要划分的整数,m已划分的划分数,a[0]~a[m-1]保存了已划分的值
{
int i;
if(n==0) shuchu(m);
else
for(i=n;i>=1;i--)
if(m==0||i<=a[m-1]) //只有当刚开始划分m==0或者i小于最大已划分的值时,将i作为下一个要划分的值,继续划分
{a[m]=i;fenjie(n-i,m+1);}
}
void main(void)
{
int n,i,m=0;
printf("please input a number(0<n<100): ");
scanf("%d",&n);
fenjie(n,m);
}
int a[100]={0};
void shuchu(int m)
{
int i;
for(i=0;i<=m-1;i++)
printf("%d ",a[i]);
printf("\n");
}
void fenjie(int n,int m) //n要划分的整数,m已划分的划分数,a[0]~a[m-1]保存了已划分的值
{
int i;
if(n==0) shuchu(m);
else
for(i=n;i>=1;i--)
if(m==0||i<=a[m-1]) //只有当刚开始划分m==0或者i小于最大已划分的值时,将i作为下一个要划分的值,继续划分
{a[m]=i;fenjie(n-i,m+1);}
}
void main(void)
{
int n,i,m=0;
printf("please input a number(0<n<100): ");
scanf("%d",&n);
fenjie(n,m);
}