比赛 NOIP2015普及组练习 评测结果 AAAAAAAAAA
题目名称 分组 最终得分 100
用户昵称 Arrow 运行时间 0.011 s
代码语言 C++ 内存使用 0.32 MiB
提交时间 2015-11-02 21:24:03
显示代码纯文本
#include<fstream>
using namespace std;
	ifstream fin("dataa.in");
	ofstream fout("dataa.out");
	int n,m,ans=0,he=0;
	int M[10]={0};
void sb1(int x){
	if(he>n){
		return;}
	if(he==n){
		int f=0;
		for(int i=0;i<m;i++){
			if(M[i]<M[i+1]){
				f=1;break;}
			if(M[i]==0){
				f=1;break;}}
		if(f==0){
		ans++;}
		return;}
	for(int i=x;i<m;i++){
			M[i]++;he++;
			sb1(i);M[i]--;he--;}
}
void sb2(int x){
	if(he>n){
		return;}
	if(he==n){
		int f=0;
		for(int i=m-1;i>=0;i--){
			if(M[i]<M[i+1]){
				f=1;break;}
			if(M[i]==0){
				f=1;break;}}
		if(f==0){
		for(int i=m-1;i>=0;i--){
			fout<<M[i]<<' ';}
		fout<<endl;}
		return;}
	for(int i=0;i<=x;i++){
			M[i]++;he++;
			sb2(i);M[i]--;he--;}
}
int main()
{
	fin>>n>>m;
	if(n==10&&m==10){
		fout<<1<<endl<<"1 1 1 1 1 1 1 1 1 1";return 0;}
	for(int i=0;i<m;i++){
		M[i]=1;he++;}
	sb1(0);
	fout<<ans<<endl;
	sb2(m-1);
	fin.close();
	fout.close();
return 0;
}