记录编号 190115 评测结果 AAAAAAAAAA
题目名称 分组 最终得分 100
用户昵称 Gravatarstdafx.h 是否通过 通过
代码语言 C++ 运行时间 0.022 s
提交时间 2015-10-02 15:21:17 内存使用 0.30 MiB
显示代码纯文本
#define MAXN 21UL

#include <cstdio>
#include <vector>

int n,m,num[MAXN];

struct Num{
	int p[MAXN];
	inline void prx(){
		for(int i=1;i<=m;i++) printf("%d ",p[i]);
		puts("");return;
	}
};

std::vector<Num> Ans;

inline void Prx(){
	Num temp;
	for(int i=1;i<=m;i++) temp.p[i]=num[i];
	Ans.push_back(temp);
	return;
}

void dfs(int p,int rest){
	if(p==m){
		num[p]=rest;
		if(num[p]>=num[p-1]) Prx();
		return;
	}
	for(int i=num[p-1];i<rest;i++) num[p]=i,dfs(p+1,rest-i);
	return;
}

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