題目描述
將整數n分成k份,且每份不能為空,任意兩個方案不相同(不考慮順序)。
例如:n=7,k=3,下面三種分法被認為是相同的。
1, 1, 5
1, 5, 1
5, 1, 1
問有多少種不同的分法。
輸入格式
n,k(6輸出格式
1個整數,即不同的分法。
輸入輸出樣例
輸入 #1
7 3輸出 #1 說明/提示
四種分法為:
1, 1, 5
1, 2, 4
1, 3, 3
2, 2, 301
2345
6k…n
0000
0000
0001
0111
1111
1120
0112
23…0
0000
0001
k000
0000
1由上圖可得出以下規律:
當蘋果數小於盤子數時即i處於對角線時即i=j,剛好可以每個盤子放乙個。所以只有一種放法。
所以我們只需要按照遞推式求出對角線右邊的即可。
為什麼從上到下,從左到右依次填寫**的值?因為第0行、對角線及其左邊的值我們都知道即其為初始值,而我們要求result[i][j]要到它上一行的值和該行該列左邊的列的值,這就決定了該錶的填寫順序是從上到下,從左到右的。
#include
using
namespace std;
long
long result[8]
[205];
//全域性變數初始值為0,行代表分為k份,列代表數是幾
intmain()
} cout<[n]
}
如果盤子可以為空,求擺放的總數?這樣遞推式又是什麼呢?
想明白了嗎?小靚仔(女)!!!
依據上面的規律將n個蘋果放到k個盤子中(盤子可為空)可以分為至少有乙個盤子為空和每個盤子至少有1個蘋果這兩種互不相交且覆蓋了全部情況的分法。
遞推式為:
result[i][j]=result[i-1][j]; j=i
其初始值又是怎麼樣的呢?
想明白了嗎?小靚仔(女)!!!
(1)第0行(除result[0][0]=1外)全部為0。
(2)第0列全部為1。
P1025 數的劃分
將整數nn分成kk份,且每份不能為空,任意兩個方案不相同 不考慮順序 例如 n 7n 7,k 3k 3,下面三種分法被認為是相同的。1,1,51,1,5 1,5,11,5,1 5,1,15,1,1.問有多少種不同的分法。輸入格式 n,kn,k 6輸出格式 11個整數,即不同的分法。include d...
P1025 數的劃分
展開 將整數nn分成kk份,且每份不能為空,任意兩個方案不相同 不考慮順序 例如 n 7n 7,k 3k 3,下面三種分法被認為是相同的。1,1,51,1,5 1,5,11,5,1 5,1,15,1,1.問有多少種不同的分法。n,kn,k 611個整數,即不同的分法。四種分法為 1,1,51,1,5...
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,4 1,3...