思路:
一块:只有“吃一块”一种方案。
两块:“两天各吃一块”和“一天吃两块”两种方案。
三块:如果第一天吃一块,则第二天开始回到共有两块的情况;如果第一天吃两块,则第二天回到共有一块的情况。
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;
}
本文详细解析了一种计算不同数量巧克力块食用方案总数的递归算法。通过将问题分解为子问题,即从N块中选择吃一块或两块,递归地计算所有可能的组合。算法首先处理基础情况,当巧克力数量为1或2时,直接返回已知的方案数,然后通过递归调用自身来解决更复杂的情况。
387

被折叠的 条评论
为什么被折叠?



