| 比赛 | 
    NOIP2015普及组练习 | 
    评测结果 | 
    AAAAAAAAAA | 
    | 题目名称 | 
    分组 | 
    最终得分 | 
    100 | 
    | 用户昵称 | 
    zjh001 | 
    运行时间 | 
    0.010 s  | 
    | 代码语言 | 
    C | 
    内存使用 | 
    0.45 MiB  | 
    | 提交时间 | 
    2015-11-06 18:47:55 | 
显示代码纯文本
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
/*
输入文件名: dataa.in
6 3
输出文件名: dataa.out
3 
1 1 4 
1 2 3 
2 2 2
*/
int n,m;
int s[205][205],cnt;
int a[205];
int find(int x,int y,int t)
{
    int i,j;
    if (t==m-1 && x>=y) 
    {
       for (i=0;i<m-1;i++)
           s[cnt][i]=a[i];
      
      s[cnt][m-1]=x;
      
       cnt++;
       
       return 0;
    }
    for (i=y;i<=x;i++)
    {  
        a[t]=i;
        find(x-i,i,t+1);
    }
}
int main()
{
    int i,j;
    
    freopen("dataa.in","r",stdin);
    freopen("dataa.out","w",stdout);
    
    scanf ("%d%d",&n,&m);
    
    find(n,1,0);
    
    printf ("%d\n",cnt);
    
    for (i=0;i<cnt;i++)
    {
        for (j=0;j<m;j++)
            printf ("%d ",s[i][j]);
        printf ("\n");
    }
    
    
    //while (1);
    return 0;
}