比赛 搜索题... 评测结果 WAWAAAWWAW
题目名称 分组 最终得分 50
用户昵称 江羽道 运行时间 0.002 s
代码语言 C 内存使用 0.38 MiB
提交时间 2014-11-04 19:41:36
显示代码纯文本
#include <stdio.h>
#include <stdlib.h>
 
int a[25]={0};
int cun[1000][25]={{1}};
int step;	
int n,m;/*
int fen(int b){
	int sum=0;
	if(0==b) return 0;
	int i,j,k;
	i=m;
	k
	for(j=1;j<=m;j++)
}*/
int main(int argc, char *argv[]) {
 	int i,j,k;
 	int z;
	int sum=0;
	freopen("dataa.in","r",stdin);
	freopen("dataa.out","w",stdout); 
	scanf("%d%d",&n,&m);
	if(m==1){
		printf("1\n%d",n);
	}
	else {
		for(i=1;i<=m;i++)
			a[i]++;
		
		step=m;
		k=n-m;
		a[step]+=k;
		for(i=1;i<=m;i++)
			cun[0][i]=a[i];
		sum++;
		int flag;
		
		for(k=0;k<100;k++){
			
			for(j=m-1;j>0;j--){
				flag=1;
				while(flag!=0){
					if((a[j]+1)<a[j+1]){
						a[j]++;
						a[j+1]--;
						for(z=1;z<=m;z++){
							cun[sum][z]=a[z];
						}
						sum++;
					}
					else flag=0;
				}
			}
			for(i=m;i>0;i--){
				for(j=m-1;j>0;j--){
					flag=1;
					while(flag!=0){
						if((a[j]+1)<=a[j+1]&&a[i-1]<=(a[i]-1)&&(a[j]+1)<=(a[i]-1)){
							a[j]++;
							a[i]--;
							for(z=1;z<=m;z++){
								cun[sum][z]=a[z];
							}
							sum++;
						}
						else flag=0;
					}
				}
			}
			
		
		}
		printf("%d\n",sum);
		for(i=0;i<sum;i++){
			for(z=1;z<=m;z++)
				printf("%d ",cun[i][z]);
			printf("\n");
		}
	}
	
 return 0;
}