描述
將正整數n表示成一系列正整數之和:n=n1+n2+…+nk,
其中n1≥n2≥…≥nk≥1,k≥1。
正整數n的這種表示稱為正整數n的劃分。求正整數n的不
同劃分個數。
例如正整數6有如下11種不同的劃分:
6; 5+1;
4+2,4+1+1;
3+3,3+2+1,3+1+1+1;
2+2+2,2+2+1+1,2+1+1+1+1;
1+1+1+1+1+1。
輸入第一行是測試資料的數目m(1<=m<=10)。以下每行均包含乙個整數n(1<=n<=10)。
輸出輸出每組測試資料有多少種分法。
樣例輸入
1樣例輸出6
11【思路】
dp[i][j]代表整數i劃分的所有數中最大數不超過j的劃分數。
#includeusingview codenamespace
std;
int dp[15][15
];
intmain()
cin>>t;
while(t--)
return
0;
}
因為n很小不超過10,可以用遞迴寫,最多算10!也不會tle,下面是dfs:
#include#includeview code#include
#include
#include
#include
using
namespace
std;
typedef
long
long
ll;
intn,ans;
void dfs(int i,int
s)
for(i; i<=10; i++)//
保證每次加的數大於等於原來的
} intmain()
}
n劃分成m個整數的和
dp[i][j]代表i劃分成j個數
#includeusingview codenamespace
std;
int dp[105][108
];
intmain()
cin>>t;
while(t--)
return
0;
}
描述acm隊隊花c小+最近在x大oj上做題,竟發現了一道做不出來的…水題!她快鬱悶死了……也許是最近狀態不太好吧……她希望大家能幫幫忙:把乙個整數分成若干個不為零的整數,問有多少種不同分法。
例:7 3 其中的分法:1 1 5,1 5 1,5 1 1是同一種分法。
輸入有多組測試資料
每組資料都有兩個整數n,m(6<=n<=500,2<=m<=6)
n表示該整數,m表示把n分成m份
輸出對每一組測試資料,輸出不同的分法數
樣例輸入
7 3樣例輸出10 2
20 3
4注意m<=6即可533
#includeusingview codenamespace
std;
int dp[505][8
];
intmain()
while(~scanf("
%d%d
",&n,&m))
return
0;
}
將n(n<=50000)分為若干個不同整數的和,有多少種不同的劃分方式,例如:n = 6, ,共4種。由於資料較大,輸出mod 10^9 + 7的結果即可。
開始想的dp[i][j]代表j的最大劃分數不超過i,但是陣列需要開很大。
換個思路就是dp[i][j]代表j劃分成i個整數的方法數,也分有1還是沒有1,跟上面第2題有點類似,但是還要求劃分成不同的整數,所以方程為dp[i][j] = dp[i][j-i](無1) + dp[i-1][j-i](有1且僅有1個1)
認真思考會發現i不會超過320,利用等差數列求和求出
#include usingview codenamespace
std;
const
int n = 50000
;const
int mod = 1e9+7
;typedef
long
long
ll;ll dp[
322][n+4
];int
main()
while(~scanf("
%d", &n))
printf(
"%d\n
", ans);
}return0;
}
整數劃分系列問題(動態規劃)
今天上演算法分析與設計課時,提到整數劃分問題,但是因為之前沒有很好地理解這一系列的問題。當被老師問到你們做演算法的應該會這個問題吧,我當時也不太記得,但是只能硬頭皮試著去寫了下,用的是brute force,老師果斷說我的方法跑不出正確的解,但是課堂上我也沒有去解釋了。課後自己驗證了一下,沒有問題,...
整數劃分(劃分dp)總結
寫了幾個題發現整數劃分是一類題,而不是一道題。具體題型 1 n相同元素放入m個相同的盤子 盤子允許為空 例題 放蘋果 poj 1664設dp i j 為 j 個元素放入i個盤子轉移方程 dp i j dp i 1 j 新新增乙個盤子,盤子為空 dp i j dp i j i i個盤子 各取出乙個 2...
整數劃分問題
整數劃分問題是乙個經典問題,幾乎在講演算法設計的書中都會講,下面把主要的思想給總結下。所謂整數劃分,就是將乙個正整數n劃分為一系列的正整數之和,如將n可以劃分為 1 我們該如何找出所有的劃分呢?我們可以先來看看整數劃分的規律 譬如正整數 6 劃分情況如下 6 5 14 2 4 1 1 3 3 3 2...