98 數的劃分

2022-07-27 15:48:19 字數 925 閱讀 1817

98 數的劃分

問題描述 :

將整數n分成k份,且每份不能為空,任意兩份不能相同(不考慮順序)。

例如:n=7,k=3,下面三種分法被認為是相同的。

1,1,5; 1,5,1; 5,1,1;

問有多少種不同的分法。

樣例輸入

7 3樣例輸出

4 輸入說明 :

兩個整數n和k

6輸出說明 :

乙個整數,即不同的分法

輸入範例 :

7 3輸出範例 :

4dp:

分兩種情況 1, 至少乙個盒子只有乙個球的個數 2,沒有乙個盒子只有乙個球

這樣進行劃分的原因是這種分類足夠特殊,1和2都有可以寫出來的表示式:

因為盒子不加區分,那麼1的情況數與「將n-1個小球放到k-1個盒子中」的情況數一樣

沒有乙個盒子只有乙個小球,那麼把每個盒子中拿出來乙個小球,對應的是「把(n-k)個小球放到k個盒子中的情況數」

至於1和2中的兩種等價關係為什麼成立,可以用集合a=集合b的方式去證明

#include using namespace std;

int main()

; for (int i = 1; i <= n; i++) }

cout << dp[n][k] << endl;

return 0;

}

dfs:

#include using namespace std;

int n, m,num=0;

void dfs(int k, int sum, int index)

for (int i = k; sum + i*(m - index) <= n; i++)//剪枝 }

int main()

A 數的劃分

a 數的劃分 將整數n 分成 k份,且每份不能為空,任意兩個方案不相同 不考慮順序 例如 n 7,k 3,下面三種分法被認為是相同的。1,1,5 1,5,1 5,1,1 問有多少種不同的分法。輸入格式 第一行有兩個整數 n,k 6sample input 7 3 sample output 解題思路...

wikioi 數的劃分

題目描述 description 將整數n分成k份,且每份不能為空,任意兩種劃分方案不能相同 不考慮順序 例如 n 7,k 3,下面三種劃分方案被認為是相同的。1 1 5 1 5 1 5 1 1 問有多少種不同的分法。輸入描述 input description 輸入 n,k 6 題解 f i,j ...

1039 數的劃分

題目描述 description 將整數n分成k份,且每份不能為空,任意兩種劃分方案不能相同 不考慮順序 例如 n 7,k 3,下面三種劃分方案被認為是相同的。1 1 5 1 5 1 5 1 1 問有多少種不同的分法。輸入描述 input description 輸入 n,k 6輸出描述 outpu...