比赛 |
搜索题... |
评测结果 |
AAAAAAAAAA |
题目名称 |
分组 |
最终得分 |
100 |
用户昵称 |
fyb |
运行时间 |
0.027 s |
代码语言 |
C++ |
内存使用 |
0.26 MiB |
提交时间 |
2014-11-04 20:13:13 |
显示代码纯文本
#include <stdio.h>
#define NMAX 20
#define MMAX 10
int n,m;
int rec[MMAX];
int gnum(int ind,int l,int min){
int num=0;
int i;
if(l<min)return 0;
if(ind==m){
// rec[ind-1]=l;
// for(i=0;i<m;i++)
// printf("%d ",rec[i]);
// putchar('\n');
return 1;
}
for(i=min;i<=n-ind;i++){
rec[ind-1]=i;
num+=gnum(ind+1,l-i,i);
}
return num;
}
void gprt(int ind,int l,int min){
int num=0;
int i;
if(l<min)return;
if(ind==m){
rec[ind-1]=l;
for(i=0;i<m;i++)
printf("%d ",rec[i]);
putchar('\n');
return;
}
for(i=min;i<=n-ind;i++){
rec[ind-1]=i;
gprt(ind+1,l-i,i);
}
}
int main(){
int i;
freopen("dataa.in","r",stdin);
freopen("dataa.out","w",stdout);
scanf("%d%d",&n,&m);
printf("%d\n",gnum(1,n,1));
gprt(1,n,1);
return 0;
}