传送门:http://acm.nbut.edu.cn/Problem/view.xhtml?id=1046
#include<stdio.h>
int a[55];
int n;
void dfs(int cnt, int sum, int pos)
{
if(sum == n)
{
printf("%d", a[0]);
for(int i = 1; i < cnt; i++)
{
printf(" %d", a[i]);
}
printf("\n");
}
else
{
for(int i = pos; i <= n; i++)
{
if(sum + i > n)
continue;
a[cnt] = i;
dfs(cnt + 1, sum + i, i);
}
}
}
int main()
{
while(~scanf("%d", &n))
{
dfs(0, 0, 1);
}
return 0;
}