time limit: 1 sec
memory limit: 128 mb
64bit io format: %lld
submitted: 44
accepted: 22 [
submit][
status][
web board]
將整數n分成k份,且每份不能為空,任意兩份不能相同(不考慮順序)。
例如:n=7,k=3,下面三種分法被認為是相同的。
1,1,5; 1,5,1; 5,1,1;
問有多少種不同的分法。
資料規模和約定 6
多組測試資料,每組測試資料報含n,k
乙個整數,即不同的分法
7 3
4
#include #include #include #include #include #include using namespace std;
int ans;
int n,m;
void dfs(int st,int num,int t)
for(int i=st;i<=num;i++) //注意在剩餘的數中列舉,為了不重複保證序列不遞減
dfs(i,num-i,t+1);
}int main()
return 0;
}
數的劃分 DP
link 解題思路設fi,jf fi,j 為i ii個數分成j jj份的合法方案數 當我們枚到i ii時劃分方法有兩種 第i ii個數單獨成為大小為1的乙份,所以方案數為fi 1,j 1f fi 1,j 1 因為求得是組合,不可以重複方案,我們可以從fi j,jf fi j,j 轉移過來,把i j ...
搜尋 數的劃分
廢話不多說,直接看題。就像這樣,只是情況有變,把乙個數分成更多的數的和就ok了。既然搜尋,就先考慮一下用深搜還是廣搜,就用深搜把 個人偏愛 那怎麼搜呢?舉個栗子以題目的栗子為栗,7怎麼分?為了按順序,那麼第一位先取1吧,接下來我們還有6要分,還剩下兩個數 第二位也取1吧,那麼我們還有5要分,還剩下1...
數的劃分問題 DP
問題 把乙個整數n分成k份,每份都不為0,有幾種分法?分析 情況分為兩類 一 每份中不包含1的方法,為保證每份 2,先拿出k個1到每乙份,然後把剩下的n k分為k份,分法有dp n k k 二 至少有乙份包含1,拿出1個當為乙份。剩下的n 1個分為k 1份,分法有dp n 1 k 1 include...