递归求解代码是最简单的,由于总数不超过20,因此也不会担心递归时函数调用栈不够的问题
转化为子问题为f(n-1)+f(n-2),分别表示第一天吃一块和第一天吃两块后还有多少吃法。
#include <iostream>
using namespace std;
int plans(int num){
if(num==1) return 1;
if(num==2) return 2;
return plans(num-1)+plans(num-2);
}
int main() {
int N;
while (cin >>N) { // 注意 while 处理多个 case
cout << plans(N) << endl;
}
}
// 64 位输出请用 printf("%lld")

京公网安备 11010502036488号