| 比赛 | 
    NOIP2015普及组练习 | 
    评测结果 | 
    AAAAAAAAAA | 
    | 题目名称 | 
    分组 | 
    最终得分 | 
    100 | 
    | 用户昵称 | 
    ミント | 
    运行时间 | 
    0.010 s  | 
    | 代码语言 | 
    C++ | 
    内存使用 | 
    4.83 MiB  | 
    | 提交时间 | 
    2015-11-02 18:37:53 | 
显示代码纯文本
#include <fstream>
#include <algorithm>
#include <string>
#include <cstring>
using namespace std;
ifstream fin("dataa.in");
ofstream fout("dataa.out");
const int maxm = 10 + 5;
const int bignum = 100000;
int n, m;
int kount = 0;
int sum = 0;
int now = 0;
int num[maxm];
int ans[bignum][maxm];
bool vis[maxm][maxm];
void dfs(int x, int y)
{
	if(x==m)
	{
		num[m] = n - now;
		if(num[m]>=num[m-1])
		{
			kount++;
			for(int i=1;i<=m;i++)
				ans[kount][i] = num[i];
		}
	}
	else
	{
		for(int i=y;i<=n-m+1;i++)
		{
			num[x] = i;
			now = now + i;
			if(now<=n)
				dfs(x+1, i);
			now = now - i;
		}
	}
}
int main()
{
	//memset(vis, false, sizeof(vis));
	
	fin>>n>>m;
	
	dfs(1, 1);
	
	fout<<kount<<endl;
	for(int i=1;i<=kount;i++)
	{
		for(int j=1;j<=m;j++)
			fout<<ans[i][j]<<' ';
		fout<<endl;
	}
	
	fin.close();
	fout.close();
	
	return 0;
}