將整數n分成k份,且每份不能為空,任意兩份不能相同(不考慮順序)。
例如:n=7,k=3,下面三種分法被認為是相同的。
1,1,5; 1,5,1; 5,1,1;
問有多少種不同的分法。
輸入n,k (6乙個整數,即不同的分法。
7 3樣例輸出1
每個測試點1s
noip2001第二題
題解用f[i][j]表示將數i分成j份,則樣例可以表示成求f[7][3]
觀察上面的前三種方案
第乙個數都是1,後兩位數的和都是6,也就是將1單獨作為乙份,剩下的i-1則分成j-1份,這樣的方案數為f[i-1][j-1]
最後一種方案如果將每一位減1,則為1 1 2,也就是f[i-j][j]
綜合起來,則有狀態轉移方程:f[i][j]=f[i-1][j-1]+f[i-j][j];
**#include using namespace std;
int n,k,f[205][10];
int main()
{ cin>>n>>k;
for(int i=1;i<=n;i++)
f[i][1]=1;
for(int i=2;i<=n;i++)
for(int j=2;j<=min(k,i);j++)
f[i][j]=f[i-1][j-1]+f[i-j][j];
cout<
P1117數的劃分
將整數n分成k份,且每份不能為空,任意兩份不能相同 不考慮順序 例如 n 7,k 3,下面三種分法被認為是相同的。1,1,5 1,5,1 5,1,1 問有多少種不同的分法。輸入n,k 6乙個整數,即不同的分法。7 3 4每個測試點1s noip2001第二題 dp。把i個球放在k個盒子裡,就是i 1...
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 ...