時間限制:
1000 ms | 記憶體限制:
65535 kb
難度: 3
描述 把乙個正整數m分成n個正整數的和,有多少種分法?
例:把5分成3個正正數的和,有兩種分法:
1 1 3
1 2 2
輸入
第一行是乙個整數t表示共有t組測試資料(t<=50)
每組測試資料都是兩個正整數m,n,其中(1<=n<=m<=100),分別表示要拆分的正數和拆分的正整數的個數。
輸出輸出拆分的方法的數目。
樣例輸入
25 25 3
樣例輸出
22
想法:先舉出例項,再找規律。
1.遞迴,比如將7劃分為3個正整數的和,肯定是1,1,5 1,2,4 ,1,3,3, 2,2,3;
這裡分成兩部分,一部分是包含1,即1,1,5, 1,2,4 1,3,3裡面都有1,因此可以劃分成1,5, 2,4 3,3(把1除掉) 另一
部分是不包含1,即2,2,3 ,可以將2,2,3分別減去1,即1,1,2,因此遞迴式就出來了,
digui(7,3)=digui(6,2)+digui(4,3);
即digui(m,n)=digui(m-1,n-1)+digui(m-n,n);
考慮到若n=1,或者m=n,肯定為1,同時若m
因此**:
#include
int digui(int m,int n)
}int n;
scanf("%d",&n);
while(n--)
return 0;}
南陽理工acm 746 整數劃分(四)(動態規劃)
時間限制 1000 ms 記憶體限制 65535 kb 難度 3 描述 問題是我們經常見到的整數劃分,給出兩個整數 n m 要求在 n 中加入m 1 個乘號,將n分成m段,求出這m段的最大乘積 輸入 第一行是乙個整數t,表示有t組測試資料 接下來t行,每行有兩個正整數 n,m 1 n 10 19,0...
南陽理工oj 整數劃分(DP)
問題是我們經常見到的整數劃分,給出兩個整數 n m 要求在 n 中加入m 1 個乘號,將n分成m段,求出這m段的最大乘積輸入 第一行是乙個整數t,表示有t組測試資料 接下來t行,每行有兩個正整數 n,m 1 n 10 19,0 m n的位數 輸出 輸出每組測試樣例結果為乙個整數佔一行 樣例輸入 2 ...
NYOJ 176 整數劃分(二)
整數劃分 二 時間限制 1000 ms 記憶體限制 65535 kb 難度 3 描述把乙個正整數m分成n個正整數的和,有多少種分法?例 把5分成3個正正數的和,有兩種分法 1 1 3 1 2 2 輸入第一行是乙個整數t表示共有t組測試資料 t 50 每組測試資料都是兩個正整數m,n,其中 1 n m...