a - 數的劃分
將整數n 分成 k份,且每份不能為空,任意兩個方案不相同(不考慮順序) 例如:n=7,k=3,下面三種分法被認為是相同的。
1,1,5 1,5,1 5,1,1
問有多少種不同的分法。
輸入格式
第一行有兩個整數
n,k (6sample input
7 3sample 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 四...