題目描述
將整數n分成k份,且每份不能為空,任意兩個方案不相同(不考慮順序)。
例如:n=7,k=3,下面三種分法被認為是相同的。
1,1,5;
1,5,1;
5,1,1.
問有多少種不同的分法。
輸入輸出格式
輸入格式:
n,k (6輸出格式:
1個整數,即不同的分法。
輸入輸出樣例
輸入樣例#1:
7 3輸出樣例#1:
4說明
時空限制: 1000ms/128mb
四種分法為:
1,1,5;
1,2,4;
1,3,3;
2,2,3.
思路:
1、把n劃分為k個,那麼先從n中拿乙個x,題目便變為將(n-x)分為m-1種,為了防止不會發生重複的情況,要保證每次拿的x不會比上一次拿的x要小,所以我們可以依次拿乙個1出來,遞推式為f[i-1][j-1],即有1的情況;
2、沒有1的情況,可以看成為j個元素預分配乙個1,剩下的便沒有1,即f[i-j][j]。故當i>j時便有了遞推式f[i][j]=f[i-1][j-1]+f[i-j][j]。
3、要注意當j為1時只有一種,當j為0時則不存在;當i為1或0時則不存在。
**如下:
#include
#include
#include
int f[
205][10
]; using namespace std;
intmain()
for(
int i=
2;i<=k;i++
)for
(int i=
2;i<=n;i++)}
printf
("%d"
,f[n]
[k])
;return0;
}
洛谷 P1025 數的劃分
題目描述 將整數n分成k份,且每份不能為空,任意兩個方案不相同 不考慮順序 例如 n 7,k 3,下面三種分法被認為是相同的。1,1,5 1,5,1 5,1,1 問有多少種不同的分法。輸入輸出格式 輸入格式 n,k 6 n 200,2 k 6 輸出格式 乙個整數,即不同的分法。輸入輸出樣例 輸入樣例...
洛谷P1025 數的劃分
將整數n分成k份,且每份不能為空,任意兩個方案不相同 不考慮順序 例如 n 7,k 3,下面三種分法被認為是相同的。1,1,5 1,5,1 5,1,1 問有多少種不同的分法。輸入格式 n,k 6 輸出格式 乙個整數,即不同的分法。輸入樣例 1 7 3 輸出樣例 1 4 四種分法為 1,1,5 1,2...
洛谷P1025 數的劃分
將整數n分成k份,且每份不能為空,任意兩個方案不相同 不考慮順序 例如 n 7,k 3,下面三種分法被認為是相同的。1,1,5 1,5,1 5,1,1 問有多少種不同的分法。輸入格式 n,k 6 輸出格式 乙個整數,即不同的分法。輸入樣例 1 複製7 3 輸出樣例 1 複製4 四種分法為 1,1,5...