#include#includeusing namespace std;
/** m為蘋果數,n為盤子數(m,n)表示總的放法
* 則可知:
* if(m>=n)即蘋果數目多
* 沒有盤子空的放法為(m-n,n)
* 有盤子空的放法為f(m,n-1)+f(m,n-2)+...+f(m,1)
* 從而有
* (m,n)=(m-n,n)+f(m,n-1)+...+f(m,1)
* 其中f(m,n)表示m個蘋果放在個盤子上不允許為空也即是f(m,n)=(m-n,n)
* if(m* 此時和m=n時的情況等價
*/ if(n==1)
return 1;
else if(m<0)
return 0;
else if(m==1||m==0)//m=0時也是一種
return 1;
else
}int main()
}
}
北大oj 1664 放蘋果
此題使用遞迴digui m,n 遞迴結束條件是 蘋果個數m為0或1,只有一種放法,reutun 1 盤子個數n為1,只有一種放法,reutun 1 然後,m個蘋果,n個盤子時,可分為兩種情況 一 m n,則 1 每個盤子放乙個蘋果,剩餘m n個蘋果再放,即為digui m n,n 2 空下乙個盤子,...
九度OJ 題目1160 放蘋果
題目描述 把m個同樣的蘋果放在n個同樣的盤子裡,允許有的盤子空著不放,問共有多少種不同的分法?用k表示 5,1,1和1,5,1 是同一種分法。輸入 第一行是測試資料的數目t 0 t 20 以下每行均包含二個整數m和n,以空格分開。1 m,n 10。輸出 對輸入的每組資料m和n,用一行輸出相應的k。樣...
北大考研複試上機 放蘋果
把m個同樣的蘋果放在n個同樣的盤子裡,允許有的盤子空著不放,問共有多少種不同的分法?用k表示 5,1,1和1,5,1 是同一種分法。每行均包含二個整數m和n,以空格分開。1 m,n 10。對輸入的每組資料m和n,用一行輸出相應的k。示例1 7 3 8 思路 用動態規劃的方法,用dp i j 表示把i...