【華爲OJ】放蘋果

將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的方法數。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章