思路:
一块:只有“吃一块”一种方案。
两块:“两天各吃一块”和“一天吃两块”两种方案。
三块:如果第一天吃一块,则第二天开始回到共有两块的情况;如果第一天吃两块,则第二天回到共有一块的情况。
N块:如果第一天吃一块,则第二天开始回到共有N-1块的情况;如果第一天吃两块,则第二天回到共有N-2块的情况。
解答:
#include <cstdio>
using namespace std;
int get_plan_num(int choco_num) {
if(choco_num == 1)
return 1;
else if(choco_num == 2)
return 2;
int plan_num = 0;
plan_num = get_plan_num(choco_num - 1) + get_plan_num(choco_num - 2);
return plan_num;
}
int main() {
int choco_num;
while(scanf("%d", &choco_num) != EOF) {
printf("%d\n", get_plan_num(choco_num));
}
return 0;
}