fork download
  1. #include <stdio.h>
  2.  
  3. /*
  4.  * 1からnまでの合計がsなる組み合わせすう
  5.  * @n: 加える1~nの数, s:合計
  6.  */
  7. int fn(int n, int s)
  8. {
  9. int count=0;
  10.  
  11. if (s==0){ //合計0(残り0)
  12. count = 1;
  13. }
  14. else if(n==0){ //加える数がない
  15. count = 0;
  16. }
  17. else if(n<=s){ //合計以下の数nを追加できる
  18. //数nを選択 + 数nを非選択
  19. count = fn(n-1,s-n) + fn(n-1,s);
  20. }
  21. else{ //n>sなので数nは非選択として次の数へ
  22. count = fn(n-1,s);
  23. }
  24. return count;
  25. }
  26.  
  27. int main(void) {
  28. int n,s; //1~nまでの数で合計がsとなる組合せ
  29.  
  30. scanf("%d,%d",&n,&s);
  31. printf("%d組\n",fn(n,s));
  32.  
  33. return 0;
  34. }
  35.  
Success #stdin #stdout 0s 5316KB
stdin
5,9
stdout
3組