放蘋果
time limit:1000ms
memory limit:10000k
total submissions:40021
accepted:24456
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
1sample output7 3
8dp[ i ][ j ]表示 i 的 j 劃分
i>=j時
dp[ i ][ j ]=dp[ i ][ j -1 ]+dp[ i - j][ j ](dp[ i ][ j -1 ]表示有乙個劃分為0,由動態規劃方程可知dp[ i ][ j -1 ]裡面包含有有兩個劃分為0的情況,依次類推,dp[ i - j][ j ]表示先給 j 個劃分每個分乙個 剩下 i-j 個求( i - j 的 j 劃分))
idp[ i ][ j ]=dp[ i ][ j -1 ]
ac**::
#include#include#include#include#include#include#include#include#include#includeusing namespace std;
#define ll long long
const int mod=100000007;
const int inf=0x3f3f3f3f;
const ll inff=0x3f3f3f3f3f3f3f3f;
const ll n=205;
const ll m=5005;
//const double pi=acos(-1);
#define mef(x) memset(x,-1,sizeof(x))
#define me0(x) memset(x,0,sizeof(x))
#define mei(x) memset(x,inf,sizeof(x))
int n,m;
void solve()
else}}
cout<>t;
while(t--)
return 0;
}
n的m劃分遞推
有n個無區別的物品,將它們劃分為不超過m組,求出劃分方法數模m的餘數。限制條件 1 m n 1000 2 m 10000 輸入n 4 m 3 m 10000 輸出 4 1 1 2 1 3 2 2 4 這樣的劃分被稱作n的m劃分,特別的,m n時被稱作n的劃分數。在此我們定義如下 dp i j j 的...
整數劃分(數的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,相當於每個數不大...