將M個蘋果放在N個盤子裏,允許有空盤,但1,5,5和5,5,1視作一種方法
輸入:蘋果數 盤子數
輸出:一共可以排放的方法
#include <iostream>
using namespace std;
int cal(int m, int n)
{
if (m < 0)
return 0;
else if (m == 0 || n == 1)
return 1;
else
return cal(m - n, n) + cal(m, n - 1);
}
int main()
{
int apple,disk;
cin >> apple>>disk;
cout << cal(apple, disk);
return 0;
}
這一題用到了遞歸的思想,程序很簡潔。
遞歸要快快學起來啊!感覺最重要的還是要有相應的算法思路,這裏分析時就會將蘋果的擺放方法分成兩類:有空盤vs無空盤
有空盤意味着至少有一個盤子爲空,就是要算m,n-1的方法數,無空盤意味着每個盤子至少有一個,也就是要算m-n,n的方法數。