A 數的劃分

2021-10-13 22:28:42 字數 1470 閱讀 3709

a - 數的劃分

將整數n 分成 k份,且每份不能為空,任意兩個方案不相同(不考慮順序) 例如:n=7,k=3,下面三種分法被認為是相同的。

1,1,5 1,5,1 5,1,1

問有多少種不同的分法。

輸入格式

第一行有兩個整數

n,k (6sample input

7 3

sample output

解題思路

設 f(n,m) 為整數 n 拆分成 m 個數字的方案數.

那麼對於每乙個情況一定可以分為以下兩種情況,且不重不漏。

1.不選 1 的情況

如果不選擇 1,我們把 n 拆分成 m 塊的情況,可以等價於將每一塊都減去1,然後分為m塊,即 f(n-m,m)

2.選 1 的情況

那麼就是其中一塊肯定有乙個 1,然後對n-1分成m-1塊,即 f(n-1,m-1)。

所以總遞推式為 f(n,m)=f(n-m,m)+f(n-1,m-1)

遞迴結束的條件是

1.n=0 或 n

#include

#define max 100

intdfs

(int n,

int k)

//把n整數劃分成k份

intmain()

把所有情況輸出:

#include

#define max 100

int parts;

//整數n分成k份,不考慮順序,譬如把3分成2份,1 2 和 2 1 是同一種情況。 統計所有情況

intdividentokpart

(int n,

int k,

int start)

//n:整數,k:分成k份 start:從start開始分類

int sum=0;

for(

int i=start; i<=n/k; i++

)return sum;

}//統計情況並輸出所有情況

intprintallconditions

(int n,

int k,

int start,

int condition[max]

,int index)

printf

("\n");

return1;

}int sum=0;

for(

int i = start; i<=n/k; i++

)return sum;

}int

main()

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

1039 數的劃分

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

數的劃分(遞迴)

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