比赛 搜索题... 评测结果 AAAAAAAAAA
题目名称 分组 最终得分 100
用户昵称 奶猹 运行时间 0.009 s
代码语言 C++ 内存使用 1.25 MiB
提交时间 2014-11-04 19:20:22
显示代码纯文本
#include<cstdio>

int n,m;
int a[22];
int sum=0;
int num=0;
int ans[10086][25];

void outit()
{
	for(int i=1;i<=m;i++)
	ans[num][i]=a[i];
}
void dfs(int x,int sum)//x组数,sum和
{
	if(x==m+1&&sum==n){num++;outit();return ;}
	if(x==m+1&&sum!=n)return ;
	for(int i=1;i<=n;i++)
	{
		if(a[x-1]<=i)
		{
			a[x]=i;
			x++;
			sum+=i;
			dfs(x,sum);
			sum-=i;
			x--;
		}
	}
}

int main()
{
	freopen("dataa.in","r",stdin);
	freopen("dataa.out","w",stdout);
	scanf("%d%d",&n,&m);
	dfs(1,0);
	printf("%d\n",num);
	for(int i=1;i<=num;i++)
	{
		for(int j=1;j<=m;j++)
		printf("%d ",ans[i][j]);
		printf("\n");
	}

}