洛谷 P1025 數的劃分 題解

2021-09-25 21:33:42 字數 1140 閱讀 9506

題目描述

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

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

1,1,5;

1,5,1;

5,1,1.

問有多少種不同的分法。

輸入輸出格式

輸入格式:

n,k (6輸出格式:

1個整數,即不同的分法。

輸入輸出樣例

輸入樣例#1:

7 3輸出樣例#1:

4說明

時空限制: 1000ms/128mb

四種分法為:

1,1,5;

1,2,4;

1,3,3;

2,2,3.

思路:

1、把n劃分為k個,那麼先從n中拿乙個x,題目便變為將(n-x)分為m-1種,為了防止不會發生重複的情況,要保證每次拿的x不會比上一次拿的x要小,所以我們可以依次拿乙個1出來,遞推式為f[i-1][j-1],即有1的情況;

2、沒有1的情況,可以看成為j個元素預分配乙個1,剩下的便沒有1,即f[i-j][j]。故當i>j時便有了遞推式f[i][j]=f[i-1][j-1]+f[i-j][j]。

3、要注意當j為1時只有一種,當j為0時則不存在;當i為1或0時則不存在。

**如下:

#include 

#include

#include

int f[

205][10

]; using namespace std;

intmain()

for(

int i=

2;i<=k;i++

)for

(int i=

2;i<=n;i++)}

printf

("%d"

,f[n]

[k])

;return0;

}

洛谷 P1025 數的劃分

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

洛谷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...

洛谷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...