1. 程式人生 > >整數劃分(一)

整數劃分(一)

題目內容:
對於一個正整數n的劃分,就是把n變成一系列正整數之和的表示式。
注意,分劃與順序無關,例如6=5+1跟6=1+5是同一種分劃。
另外,單獨這個整數本身也算一種分劃。
例如:對於正整數n=5,可以劃分為:
1+1+1+1+1
1+1+1+2
1+1+3
1+2+2
2+3
1+4
5

輸入描述
輸入一個正整數n

輸出描述
輸出n整數劃分的總數k

輸入樣例
5

輸出樣例

7

程式碼:

#include "stdio.h"
int fun(int a, int b){
if(a==1||b==1)
return 1;
else if(a<1||b<1)
return 0;
else if(a==b)
return 1+fun(a,b-1);
else if(a>b)
return fun(a-b,b)+fun(a,b-1);
else
return fun(a,a);
}
int main(){
int n,k;
scanf("%d",&n);
k=fun(n,n);
printf("%d",k);
return 0;
}