比赛 2008haoi模拟训练1 评测结果 AAAAAAAAAA
题目名称 分组 最终得分 100
用户昵称 zqzas 运行时间 0.007 s
代码语言 C++ 内存使用 38.73 MiB
提交时间 2008-10-03 19:26:04
显示代码纯文本
#include <stdio.h>

#define maxn 3000
#define maxm 10

int n,m,zan[maxm],ans[maxn][maxn];
long ans_many;
FILE *f1,*f2;

void search(int x,int y,int now)
{
	int i;
	if (x+1>=m)
	{
		if (n-now>=y)
		{
			zan[x]=n-now;
			for (i=0;i<m;i++)
				ans[ans_many][i]=zan[i];
			ans_many++;
		}
		return;
	}
	for (i=y;i<=n;i++)
	{
		zan[x]=i;
		search(x+1,i,now+i);
		zan[x]=0;
	}
}

void run(void)
{
	search(0,1,0);
}

void ini(void)
{
	fscanf(f1,"%d%d",&n,&m);
}

int main(void)
{
	int i,j;
	f1=fopen("dataa.in","r");
	f2=fopen("dataa.out","w");
	ini();
	run();
	fprintf(f2,"%ld\n",ans_many);
	for (i=0;i<ans_many;i++)
	{
		fprintf(f2,"%d",ans[i][0]);
		for (j=1;j<m;j++)
		{
			fprintf(f2," %d",ans[i][j]);
		}
		fprintf(f2,"\n");
	}
	fclose(f1);fclose(f2);
	return 0;
}