POJ 1664 放蘋果 解題報告

2021-07-24 13:48:10 字數 955 閱讀 3222

這是一道求總方案數的dp,唯一的不同就是2,5這種放法和5,2是一樣的,於是這道題就變成了把整數n分成非負整數m份,有多少種分法,寫轉移方程式的時候要仔細思考思考。

用s[i][j]表示用i個盤子放j個蘋果的不重複的總方案數。

處理邊界:s[

1][k

]=1(

0≤k≤

m),s[1][k]很顯然只有一種方法。s[

i][j

]=在算是s[i

][j]

時,分成兩個部分計算,一部分是s[

i−1]

[j] ,就是新加進來的這個盤子沒有起作用的方案數,那另一部分就是這個盤子裡放東西的方案數s[

i][j

−i] ,注意,第二部分轉移的前提是i≤

j ,就是說要把i−

1 個盤子都放東西,且要把這些多於乙個蘋果的盤子裡的蘋果放一部分給第

i 個盤子,使得最終這

i個盤子裡都放東西,那為什麼必須最終

i 個盤子不為空呢,因為只要i−

1個盤子中有空盤子,都可以歸併到第一部分討論,畢竟盤子的順序可以調換,即2,

2,4,

0 和2,

0,4,

2 是一種方案。

**如下:

/*

my convictions will not falter.--poppy

*/#include

#include

#include

using

namespace

std;

int i,j,k,s[15][15],n,m,t,ans=0;

int read()

int main()

printf("%d\n",s[n][m]);

}return

0;}

poj1664 放蘋果 解題報告

描述 把m個同樣的蘋果放在n個同樣的盤子裡,允許有的盤子空著不放,問共有多少種不同的分法?用k表示 5,1,1和1,5,1 是同一種分法。輸入第一行是測試資料的數目t 0 t 20 以下每行均包含二個整數m和n,以空格分開。1 m,n 10。輸出 對輸入的每組資料m和n,用一行輸出相應的k。樣例輸入...

POJ1664放蘋果 解題報告

一道遞迴裸題。直接上 了 特別注意遞迴條件的判讀,一開始沒有考慮到盤子數為1的情況。只考慮蘋果為0了。include using namespace std int get res int m,int n if m n mreturn get res m,m else 如果水果多 get res m...

poj1664 放蘋果 acm解題報告 遞推

放蘋果time limit 1000ms memory limit 10000k total submissions 31892 accepted 20055 description 把m個同樣的蘋果放在n個同樣的盤子裡,允許有的盤子空著不放,問共有多少種不同的分法?用k表示 5,1,1和1,5,1...