資訊學奧賽一本通 1192 放蘋果(遞推)

2021-09-26 18:24:05 字數 939 閱讀 7790

主要是要找規律,可以在草稿本上自己找一下規律。

假設當前蘋果數為i,盤子數為j,用a[i][j]表示i個蘋果放到j個盤子中。

1、如果蘋果數為0或者1,那麼方法就是1;如果盤子數為0或者1,方法也是1

2、如果蘋果數大於等於盤子數,那麼方法為 蘋果數為i,盤子數為j-1時的方法 + 蘋果數為i-j,盤子數為j時的方法 ,即a[i][j] = a[i][j-1] + a[i-j][j]

(這個遞推式我自己感覺不太好想。蘋果數大於盤子數時,放法分為兩種情況:有盤子為空和沒有盤子為空。有盤子為空時,每次都是遞推式的上乙個,即i個蘋果放j-1個盤子的情況;沒有盤子為空時,我們先乙個盤子乙個蘋果的放好,相當於剩下i-j個蘋果放到j個盤子的情況)

3、如果蘋果數小於盤子數,那麼方法為蘋果數為i,盤子數為i時候的方法

(這個好想,觀察上圖即可)

#include

#include

using namespace std;

int a[15]

[15];

intmain()

for(

int i=

0;i<=

10;i++

)//0,1個盤子,不管有多少個蘋果都為1

for(

int i=

2;i<=

10;i++)}

int t,m,n;

scanf

("%d"

,&t)

;while

(t--

)return0;

}

資訊學奧賽一本通 放蘋果(遞迴)

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

資訊學奧賽一本通 小球(drop)

許多的小球乙個乙個的從一棵滿二叉樹上掉下來組成fbt full binary tree,滿二叉樹 每一時間,乙個正在下降的球第乙個訪問的是非葉子節點。然後繼續下降時,或者走右子樹,或者走左子樹,直到訪問到葉子節點。決定球運動方向的是每個節點的布林值。最初,所有的節點都是false,當訪問到乙個節點時...

資訊學奧賽一本通 小球(drop)

this drop is gonna last forever!許多的小球乙個乙個的從一棵滿二叉樹上掉下來組成fbt full binary tree,滿二叉樹 每一時間,乙個正在下降的球第乙個訪問的是非葉子節點。然後繼續下降時,或者走右子樹,或者走左子樹,直到訪問到葉子節點。決定球運動方向的是每個...