您的位置:首页 > 编程语言 > C语言/C++

吃糖果问题C++

2020-01-15 06:15 1136 查看

问题描述

名名的妈妈从外地出差回来,带了一盒好吃又精美的巧克力给名名(盒内共有 N 块巧克力,20 > N >0)。
妈妈告诉名名每天可以吃一块或者两块巧克力。假设名名每天都吃巧克力,问名名共有多少种不同的吃完巧克力的方案。

分析:
该题的问题是问有多少种不同的吃完巧克力的方案,而不是需要多少天的问题,所以天数只起迷惑作用。
我们假设盒内有1块巧克力,每次吃1或2块,求方法数;假设有2块巧克力,每次吃1或2块,求方法数;假设有3块巧克力,每次吃1或2块…类比下去会发现这个题就是走台阶问题(对于走台阶问题应该是比较熟悉的),巧克力数就是台阶数,每次能迈1或2阶。

巧克力数 方法数
1 1
2 2
3 3
4 5

可得递推式: f(n) = f(n-1)+f(n-2)

编程如下:

#include <iostream>

using namespace std;

int main()
{
int n; //糖果数
cin>>n;
int a[100] = {0}; //存储方法数
a[1] = 1;
a[0] = 1;
for(int i=2;i<=n;i++){
a[i] = a[i-1]+a[i-2];
}
cout<<a[n]<<endl;
}
  • 点赞
  • 收藏
  • 分享
  • 文章举报
小韩不要作小白 发布了19 篇原创文章 · 获赞 0 · 访问量 1364 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: