用c++实现猴子偷桃、Fibonacci数列

4.1.2 猴子吃桃


【问题】一只猴子摘了很多桃子,每天吃现有桃子的一半多一个,到第10天时只有一个桃子,问原有桃子多少个?


【想法】设an表示第n天桃子的个数,猴子吃桃问题存在如下递推式:



【算法实现】由于每天的桃子个数依赖于前一天的桃子个数,属于逆推法。设函数 MonkeyPeach 实现猴子吃桃问题,变量num 表示桃子的个数,程序如下。

#include <iostream>
using namespace std;

int MonkeyPeach(int n)
{
int i, num = 1;
for (i = n - 1; i >= 1; i--)
num = (num + 1) * 2;
return num;
}
int main( )
{
int n,m;
cin>>n;
m=MonkeyPeach(n) ;
cout<<"原有桃子"<<m<<"个"<<endl;
return 0;

}

【算法分析】显然,算法MonkeyPeach的时间复杂度是O(n)

4.2.1 Fibonacci数列


【问题】把一对兔子(雌雄各1只)放到围栏中,自第2个月起,每个月这对兔子都会生出一对新兔子,其中雌雄各1只,而且每对新兔子自第2个月起每个月也会生出一对新兔子,也是雌雄各1只。问一年后围栏中有多少对兔子?


【想法】令Fn表示第n个月围栏中兔子的对数,显然第1个月有1对,由于每对新兔子在第2个月后才可以生兔子,因此,第2个月仍然有1对,第n个月时,那些第n-1个月就已经在围栏中的兔子仍然存在,第n-2个月就已经在围栏中的每对兔子都会生出一对新兔子,即Fn=Fn-1+Fn-2。因此,Fibonacci(斐波那契)数列存在如下递推关系式:


【算法实现】设函数Fibonacci参解第n个月兔子的对数,变量1和f2分别存储第n-1和n-2个月兔子的对数,程序如下。

#include <iostream>
using namespace std;

int Fibonacci(int n)
{
int f, f1 = 1, f2 = 1, i;
for (i = 3; i <= n; i++)
{
f = f1 + f2; f2 = f1; f1 = f;
}
return f;
}
int main( )
{
int n;
cout << "请输入月份:";
  cin >> n;
    cout<<"第"<<n<<"个月有"<<Fibonacci(n)<<"对兔子"<<endl; 
    return 0;
}


【算法分析】显然,算法Fibonacci的时间复杂度是O(n)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/572427.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vue2 export default写法,computed、methods的使用

<template><div><h2>{{nameAll}}</h2><h2>{{method}}</h2><h2>{{tt()}}</h2><h2>{{firstName}}</h2><h2>更新后赋值数据&#xff1a;{{lastName}}</h2><h2>赋值数据:{{writeValue}}</h2>…

[Qt] QString::fromLocal8Bit 的使用误区

QString::fromLocal8Bit 是一个平台相关的函数。默认情况下在 Windows 下 就是 gbk 转 utf-8 ,在 Linux就应该是无事发生。因为Linux平台默认的编码方式就是 utf-8 可以通过 void QTextCodec::setCodecForLocale(QTextCodec *c)来修改 Qt默认的编码方式。如下 第一输出乱码的…

网页版短信平台软件开发要点|手机短信系统搭建建设

开发网页版短信平台软件时&#xff0c;需要考虑以下关键要点&#xff0c;以确保平台功能完喂、性能稳定和用户体验良好&#xff1a; 用户管理&#xff1a;实现用户注册、登录、Q:290615413权限管理等功能&#xff0c;确保用户信息安全可控。 短信发送功能&#xff1a;集成短信…

Flutter开发之下标

Flutter开发之下标 在iOS开发中使用下标就很方便&#xff0c;本文主要是记录一下Flutter中系统自带的下标&#xff0c;还可以通过对应的方法编写自己的下标。 在Objective-C中的下标 关键字Subscript。 NSArray - (ObjectType)objectAtIndexedSubscript:(NSUInteger)idx A…

EFI Driver Model(下)-SCSI 驱动设计

1、SCSI简介 SCSI是Small Computer System Interface&#xff08;小型计算机系统接口&#xff09;的缩写&#xff0c;使用50针接口&#xff0c;外观和普通硬盘接口有些相似。SCSI硬盘和普通IDE硬盘相比有很多优点&#xff1a;接口速度快&#xff0c;并且由于主要用于服务器&…

通往荣耀之路! 在 The Sandbox 中种植树木,拯救真正的森林

The Sandbox 团队祝你国际森林日快乐&#xff01; 我们相信&#xff0c;在创造一个更美好、更包容、更友善的地球的过程中&#xff0c;我们每个人都有责任采取具有影响力和目的性的行动。这就是为什么我们平台的核心支柱是利用元宇宙来推动公益事业。 国际森林日是我们践行这一…

数据分析之POWER Piovt透视表分析与KPI设置

将几个数据表之间进行关联 生成数据透视表 超级透视表这里的字段包含子字段 这三个月份在前面的解决办法 1.选中这三个月份&#xff0c;鼠标可移动的时候移动到后面 2.在原数据进行修改 添加列获取月份&#xff0c;借助month的函数双击日期 选择月份这列----按列排序-----选择月…

2024年目前阿里云服务器一个月收费价格表多少钱?

阿里云服务器一个月多少钱&#xff1f;最便宜5元1个月。阿里云轻量应用服务器2核2G3M配置61元一年&#xff0c;折合5元一个月&#xff0c;2核4G服务器30元3个月&#xff0c;2核2G3M带宽服务器99元12个月&#xff0c;轻量应用服务器2核4G4M带宽165元12个月&#xff0c;4核16G服务…

Django开发复盘

一、URL 对于一个不会写正则表达式的蒟蒻来说&#xff0c;在urls.py中就只能傻傻的写死名字&#xff0c;但是即便这样&#xff0c;还会有很多相对路径和绝对路径的问题&#xff08;相对ip端口的路径&#xff09;&#xff0c;因为我们网页中涉及到页面跳转&#xff0c;涉及到发送…

机器学习复习手册

机器学习的要素 基本概念 泛化&#xff1a; The ability to predict accurately the target for new examples that differ from those used in the training set is known as generalization.监督学习&#xff1a;The training data comprises examples of the input variab…

python在运行时控制台以表格形式输出结果prettytable.PrettyTable()

使用prettytable库按表格的形式美化输出结果 效果如图&#xff1a; 表格中可接收列表格式的数据&#xff0c;列表中装字符串 # 引入模块 import prettytable as pt# 创建表格与表头&#xff0c;包含五列&#xff0c;分别为train-epoch&#xff0c;class&#xff0c;precisio…

【进程控制】超详细讲解wait和waitpid的原理(结合代码)

文章目录 前言waitpid函数参数option什么叫非阻塞等待&#xff1f;参数status wait 函数 前言 在了解了进程状态这一概念之后&#xff0c;我们明白了什么叫做僵尸进程&#xff1a;子进程退出&#xff0c;父进程“不管不顾”。而一旦存在僵尸进程&#xff0c;势必也会存在内存泄…