題目描述 description
將整數n分成k份,且每份不能為空,任意兩種劃分方案不能相同(不考慮順序)。
例如:n=7,k=3,下面三種劃分方案被認為是相同的。
1 1 5
1 5 1
5 1 1
問有多少種不同的分法。
輸入描述 input description
輸入:n,k (6輸出描述 output description
輸出:乙個整數,即不同的分法。
樣例輸入 sample input
7 3樣例輸出 sample output
問題分析:與放蘋果的題類似
f[i][j]表示數i被分為j份,共有兩種情況,一種是不含1的,一種是含有1的。
不含1的可看作是每乙份都減去1,共減去j,情況不變,即f[i-j][j];
含有1的可看作是數i-1被分為j-1份,即第j份為1,也就是f[i-1][j-1];
即f[i][j]=f[i-j][j]+f[i-1][j-1]。
#include using namespace std;
acf[i][j]=f[i-1][j-1]+f[i-j][j]
分兩種情況:全都不是1+至少有乙個為1
int f[250][10];
int main()
for(int i=2;i<=n;i++)
}} cout《動態規劃想不到的話,還可以用深搜寫,因為本題資料量較小。具體分析見注釋。
#include using namespace std;
///ac
int dfs(int n,int k,int i)//n個數被分為k份,每份至少為i
else
} return sum;
} }int main()
CodeVS 1039 數的劃分
題目描述 description 將整數n分成k份,且每份不能為空,任意兩種劃分方案不能相同 不考慮順序 例如 n 7,k 3,下面三種劃分方案被認為是相同的。1 1 5 1 5 1 5 1 1 問有多少種不同的分法。輸入描述 input description n,k 6 輸出描述 output ...
codevs 1039 數的劃分
題目描述 description 將整數n分成k份,且每份不能為空,任意兩種劃分方案不能相同 不考慮順序 例如 n 7,k 3,下面三種劃分方案被認為是相同的。1 1 5 1 5 1 5 1 1 問有多少種不同的分法。輸入描述 input description 輸入 n,k 6輸出描述 outpu...
codevs 1039 數的劃分
codevs 1039 數的劃分 題目描述 description 將整數n分成k份,且每份不能為空,任意兩種劃分方案不能相同 不考慮順序 問有多少種不同的分法。例如 n 7,k 3,下面三種劃分方案被認為是相同的。1 1 5 1 5 1 5 1 1 輸入描述 input description 輸...