poj1664 放蘋果 解題報告

2021-07-04 03:59:43 字數 670 閱讀 2908

描述

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

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

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

樣例輸入 1

7 3

樣例輸出 8

思路:看了網上大神的思路,屌屌的

設f(m,n) 為m個蘋果,n個盤子的放法數目,則對n

當n>m,必定n-m永遠空著,就把他們丟了,f(m,n) = f(m,m)

當n<=m時,

1、有至少乙個盤子空著,即相當於f(m,n) = f(m,n-1);

2、所有盤子都有蘋果,從每個盤子中拿掉乙個蘋果不改變狀態f(m,n) = f(m-n,n)

當沒有蘋果可放時,設為1種放法;

**:

#include #include #include using namespace std;

//注意要讓m=0返回1,例子,f(2,2)=f(2,1)+f(0,2)=2,如果讓f(0,2)其返回0,則錯誤

int fun(int m,int n)

int main()

}

POJ 1664 放蘋果 解題報告

這是一道求總方案數的dp,唯一的不同就是2,5這種放法和5,2是一樣的,於是這道題就變成了把整數n分成非負整數m份,有多少種分法,寫轉移方程式的時候要仔細思考思考。用s i j 表示用i個盤子放j個蘋果的不重複的總方案數。處理邊界 s 1 k 1 0 k m s 1 k 很顯然只有一種方法。s i ...

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...