二十四:数字拆解

问题 : 数字拆解
题目描述

给出一个数M,求M通过比M小的数的的加法,有多少种方法。
比如给出的数是6
那么,M可以由
1. 5+1=6
2. 4+2=6
3. 4+1+1=6
4. 3+3=6
5. 3+2+1=6
6. 3+1+1+1=6
7. 2+2+2=6
8. 2+2+1+1=6
9. 2+1+1+1+1=6
10. 1+1+1+1+1+1=6
共10种方法。
输入
一个数M(M小于50)
输出
一个数,表示有多少种方法
样例输入
6
样例输出

10

 1 #include<stdio.h>
 2 #include<windows.h>
 3 int line=0;
 4 void fun(int n,int sum,int i){
 5     int a;
 6     for(int j=1;j<=i;j++){
 7         a=sum;
 8         a=a+j;
 9         
10         if(n==a){
11             line++;
12             //Sleep(1000);
13             return;
14         }else{
15             //    Sleep(1000);
16             fun(n,a,j);    
17         }
18     }
19 }
20 int main(){
21     int n,sum;
22     scanf("%d",&n);
23     for(int i=1;i<n;i++){
24         sum=i;
25         fun(n,sum,i);
26     }
27     printf("%d",line);
28 }
原文地址:https://www.cnblogs.com/yuming226/p/8150886.html