比赛 |
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;
}