比赛 NOIP2015普及组练习 评测结果 AAAAAAAAAA
题目名称 分组 最终得分 100
用户昵称 Riolu 运行时间 0.022 s
代码语言 C++ 内存使用 0.33 MiB
提交时间 2015-11-05 19:43:50
显示代码纯文本
  1. #include<cstdio>
  2. int f[100][100];
  3. int n,m,i,max;
  4. void dfs(int step,int num,int maxn){
  5. if (step == m+1)
  6. {
  7. if(num == 0)
  8. {
  9. i++;maxn=1;return;
  10. }
  11. return;
  12. }
  13. for(int j=maxn;j<=num;j++)
  14. {
  15. f[i][step]=j;
  16. dfs(step+1,num-j,j);
  17. }
  18. return ;
  19. }
  20. int main()
  21. {
  22. freopen("dataa.in","r",stdin);
  23. freopen("dataa.out","w",stdout);
  24. scanf("%d%d",&n,&m);
  25. i=1;
  26. dfs(1,n,1);
  27. i--;
  28. printf("%d\n",i);
  29. for(int k=1;k<=i;k++){
  30. if(f[k][1]==0)
  31. f[k][1]=f[k-1][1];
  32. printf("%d",f[k][1]);
  33. for(int j=2;j<=m;j++){
  34. if(f[k][j]==0)
  35. f[k][j]=f[k-1][j];
  36. printf(" %d",f[k][j]);
  37. }
  38. printf("\n");
  39. }
  40. return 0;
  41. }