比赛 搜索题... 评测结果 AAAAAAAAAA
题目名称 分组 最终得分 100
用户昵称 jacon 运行时间 0.022 s
代码语言 C++ 内存使用 0.37 MiB
提交时间 2014-11-04 20:18:08
显示代码纯文本
#include<cstdio>  
using namespace std;  
int num,n,m;  
int ans[1000][22];  
int temp[22];  
void dfs(int cur,int cnt,int last){  
    if(cnt>n) return ;  
    if(cur==m&&last<=(n-cnt)){  
        num++;  
        for(int i=1;i<m;i++)  
        ans[num][i]=temp[i];  
        ans[num][m]=n-cnt;  
        return ;  
    }  
    for(int i=last;i<=n;i++){  
        temp[cur]=i;  
        dfs(cur+1,cnt+i,i);  
    }  
}  
int main(){  
    freopen("dataa.in","r",stdin);  
    freopen("dataa.out","w",stdout);  
    scanf("%d%d",&n,&m);  
    num=0;  
    dfs(1,0,1);  
    printf("%d\n",num);  
    for(int i=1;i<=num;i++){  
       for(int j=1;j<m;j++)  
       printf("%d ",ans[i][j]);  
       printf("%d\n",ans[i][m]);  
    }  
    return 0;  
  
}