劃分數DP n的m劃分 poj1664

2021-09-21 06:20:47 字數 861 閱讀 8193

放蘋果

time limit: 1000ms memory limit: 10000k

total submissions: 39514 accepted: 24166

description

把m個同樣的蘋果放在n個同樣的盤子裡,允許有的盤子空著不放,問共有多少種不同的分法?(用k表示)5,1,1和1,5,1 是同一種分法。

input

第一行是測試資料的數目t(0 <= t <= 20)。以下每行均包含二個整數m和n,以空格分開。1<=m,n<=10。

output

對輸入的每組資料m和n,用一行輸出相應的k。

sample input

17 3

sample output

8source

lwx@poj

n的m劃分,i 的 j 劃分

dp[i][j]等於

當 i>=j時

有乙個空盤劃分情況(dp[i][j-1])+沒有乙個空盤劃分情況(dp[i-j][j])

否則等於有乙個空盤的劃分,如果還是不夠,空盤繼續增加

dp[i][j-1]

初始化dp[0][0]=1;

dp[i][j-1]要求 j 從1開始,dp[i-j][j]要求判斷 i 和 j 大小

#include

using namespace std;

const

int maxn=50;

int n,m,dp[maxn]

[maxn]

,t;int

main()

} cout << dp[n]

[m]<}return0;

}

整數劃分(數的m劃分)

includeusing namespace std int f int n,int m n代表數字,m代表n的m劃分 int main 方式二 動態規劃 dp i j 表示i的j次劃分的情況種數 狀態轉移方程為dp i j dp i j j dp i 1 j 1 1.dp i 1 j 1 表示劃分...

將n劃分成最大數不超過m的劃分數

之前寫過類似的文章,今天看到另外一種劃分數的方法,也就是將n劃分成不大於m的種數。若是劃分多個整數可以存在相同的 dp n m dp n m 1 dp n m m dp n m 表示整數 n 的劃分中,每個數不大於 m 的劃分數。則劃分數可以分為兩種情況 a.劃分中每個數都小於 m,相當於每個數不大...

poj 1664 放蘋果 劃分數

題意 中文題目,不解釋。題解 第一種方法是暴力深搜 列舉盤子1 n放蘋果數量的所有情況,不需要剪枝 將每次列舉的情況,即每個盤的蘋果數量,以字典序排序,然後存進set裡 以此去重像 5 1 1 和 1 5 1 這種相同情況。1 2 author wixson3 4 include 5 include...