P1025 數的劃分

2021-10-03 00:02:29 字數 1295 閱讀 6436

題目描述

將整數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...