| 比赛 | 
    NOIP2015普及组练习 | 
    评测结果 | 
    AAAAAAAAAA | 
    | 题目名称 | 
    分组 | 
    最终得分 | 
    100 | 
    | 用户昵称 | 
    Riolu | 
    运行时间 | 
    0.022 s  | 
    | 代码语言 | 
    C++ | 
    内存使用 | 
    0.33 MiB  | 
    | 提交时间 | 
    2015-11-05 19:43:50 | 
显示代码纯文本
#include<cstdio>
int f[100][100];
int n,m,i,max;
void dfs(int step,int num,int maxn){
	if (step == m+1)
	{
		if(num == 0)
		{
			i++;maxn=1;return;
			}
		return;
		}
	for(int j=maxn;j<=num;j++)
	{
		f[i][step]=j;
		dfs(step+1,num-j,j);
		}
		return ;
	}
int main()
{
	freopen("dataa.in","r",stdin);
	freopen("dataa.out","w",stdout);
	scanf("%d%d",&n,&m);
	i=1;
	dfs(1,n,1);
	i--;
	printf("%d\n",i);
	for(int k=1;k<=i;k++){
		if(f[k][1]==0)
			f[k][1]=f[k-1][1];
			printf("%d",f[k][1]);
			
		for(int j=2;j<=m;j++){
			if(f[k][j]==0)
				f[k][j]=f[k-1][j];
			printf(" %d",f[k][j]);
		}
		printf("\n");
		}
	return 0;
	}