7-27 兔子繁衍问题(15 分)

简介: 7-27 兔子繁衍问题(15 分)

// 我的思路是三种状态兔子总和<n,第三种状态兔子可以生,在循环里递推。题解思路是斐波那契


// 卡壳,原因是题目的误导性太强了


从出生后第3个月起每个月都生一对兔子,题目的真正意思是兔子长到第三个月的瞬间立刻生一对兔子,也就是二月成熟,花一个月生一对兔子


// 从原文完全看不出这个真正的意思,不知道是不是我语文不好


// 有歧义的题尝试列下情况


// 第一个月 兔子1,出生状态


// 第二个月 兔子1


// 第三个月 兔子1+1


// 第四个月 一开始的兔子生1


// 第五个月 一开始的兔子生1,一开始的兔子的子一代生1


// 题目清楚地说明了兔子刚出生是属于第一个月,理解了这第一个月指的是什么就好办了


// 首先第1个月肯定是一个时间跨度,不可能是兔子出生的时间点


// 那它指的就是兔子被称为“出生第一个月”到“出生第二个月”中间的间隔1->2


// 第二个月就是2->3


// 那第三个月就是3->4,此时就应该生兔子了,也就是一直兔子出生到月份+2就生兔子了,


// 此时可以发现,新出生的兔子数量就是”出生第二个月“到“出生第三个月后”的兔子数量总和,也就是这两种兔子没有区别,可以直接合并,


// 这样就可以在循环中递推每一种兔子的数量了


// “出生第一个月”的兔子数量 = ”出生第二个月“到“出生第三个月后”的兔子数量总和,


// ”出生第二个月“到“出生第三个月后”的兔子数量总和 要多加原来”出生第一个月“的兔子数量


// 用c1表示”出生第一个月“的兔子数量,c2表示”出生第二个月“到“出生第三个月后”的兔子数量总和,代码如下


// 从出生后第3个月起每个月都生一对兔子。小兔子长到第3个月后每个月又生一对兔子。假如兔子都不死
// 请问第1个月出生的一对兔子,至少需要繁衍到第几个月时兔子总数才可以达到N对?
// 内容重复,用递归
// 兔子数量共享,用全局
// 兔子年龄不共享,用局部,
// 兔子年龄为3时开始调用递归,开始加兔子数量,数量达到了n就返回
// 递归没写好,换模拟
// int cnt = 2;
int t;
int n;
// void dfs(int year){
//     while(cnt < n){
//         year++;
//         t++;
//         cout << t << endl;
//         if(year >= 3){
//             dfs(0);
//             cnt+=2;
//         }
//     }
//     return;
// ,请问第1个月出生的一对兔子,至少需要繁衍到第几个月时兔子总数才可以达到N对?,t = 1;
// 我的思路是三种状态兔子总和<n,第三种状态兔子可以生,在循环里递推。题解思路是斐波那契
// 卡壳,从出生后第3个月起每个月都生一对兔子,题目的真正意思是兔子长到第三个月的瞬间立刻生一对兔子,也就是二月成熟,花一个月生一对兔子
// 从原文完全看不出这个真正的意思,不知道是我语文不好还是出题人语文不好,
// 有歧义的题尝试列下情况
// 第一个月 兔子1,出生状态
// 第二个月 兔子1 
// 第三个月 兔子1+1
// 第四个月 一开始的兔子生1
// 第五个月 一开始的兔子生1,一开始的兔子的子一代生1
// 题目清楚地说明了兔子刚出生是属于第一个月,理解了这第一个月指的是什么就好办了
// 首先第1个月肯定是一个时间跨度,不可能是兔子出生的时间点
// 那它指的就是兔子被称为“出生第一个月”到“出生第二个月”中间的间隔1->2
// 第二个月就是2->3
// 那第三个月就是3->4,此时就应该生兔子了,也就是一直兔子出生到月份+2就生兔子了,
// 此时可以发现,新出生的兔子数量就是”出生第二个月“到“出生第三个月后”的兔子数量总和,也就是这两种兔子没有区别,可以直接合并,
// 这样就可以在循环中递推每一种兔子的数量了
// “出生第一个月”的兔子数量 = ”出生第二个月“到“出生第三个月后”的兔子数量总和,
// ”出生第二个月“到“出生第三个月后”的兔子数量总和 要多加原来”出生第一个月“的兔子数量
// 用c1表示”出生第一个月“的兔子数量,c2表示”出生第二个月“到“出生第三个月后”的兔子数量总和,代码如下
#include <algorithm>
#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
int t,n;
int main(){
   cin >> n;
    int c1 = 1,c2 = 0;
    t = 1;
    while(c1+ c2 < n){
       int  a =c1,b = c2;
        c1 = b;
        c2 += a;
        t++;   
    }
    cout << t<< endl;
    return 0;
}
目录
相关文章
|
监控 架构师 Java
JVM进阶调优系列(6)一文详解JVM参数与大厂实战调优模板推荐
本文详述了JVM参数的分类及使用方法,包括标准参数、非标准参数和不稳定参数的定义及其应用场景。特别介绍了JVM调优中的关键参数,如堆内存、垃圾回收器和GC日志等配置,并提供了大厂生产环境中常用的调优模板,帮助开发者优化Java应用程序的性能。
|
SQL 网络协议 数据库
SQL Server 2019下载安装教程
SQL Server 2019下载安装教程
3494 0
|
8月前
|
传感器 物联网 大数据
物联网与大数据:揭秘万物互联的新纪元
物联网与大数据:揭秘万物互联的新纪元
298 7
|
JavaScript 前端开发 API
网络请求库 – axios库
网络请求库 – axios库
380 60
|
XML JSON 安全
Web安全-XXE漏洞
Web安全-XXE漏洞
112 1
|
开发框架 JSON 缓存
基于SqlSugar的开发框架循序渐进介绍(22)-- Vue3+TypeScript的前端工作流模块中实现统一的表单编辑和表单详情查看处理
基于SqlSugar的开发框架循序渐进介绍(22)-- Vue3+TypeScript的前端工作流模块中实现统一的表单编辑和表单详情查看处理
成功解决:CentOS7中无法连接网络
这篇文章介绍了如何解决CentOS 7虚拟机无法连接网络的问题。作者猜测问题可能是由于虚拟机软件的网关和CentOS 7系统的网关不一致导致的。文章提供了两种解决方案:修改虚拟网络编辑器的网关或修改CentOS系统的网关和IP地址。作者选择了后者,并演示了如何在CentOS终端中以root用户身份修改IP和网关。
成功解决:CentOS7中无法连接网络
|
存储 Java 数据库
【微服务系列笔记】微服务概述
本文对比了单体应用和微服务架构。单体应用中所有功能模块在一个工程中,而微服务则按领域模型拆分为独立服务,每个服务有明确边界,可独立开发、部署和扩展。微服务允许使用不同语言和技术栈,每个服务有自己的数据库。微服务架构的优点包括易于开发维护、技术栈开放和错误隔离,但缺点包括增加运维成本、调用链路复杂、分布式事务处理困难以及学习成本高。实现微服务通常涉及SpringCloud等开发框架和Docker等运行平台。
279 2
|
存储 安全 芯片
阿里云网盘与相册问题之MAC电脑是否支持挂载盘
阿里云网盘与相册是阿里云提供的云存储服务,用户可以安全便捷地存储和管理个人文件、照片等数据;本合集将介绍如何使用阿里云网盘和相册服务,包括文件上传、同步、分享,以及处理常见使用问题的技巧。
386 1
|
弹性计算 网络安全 调度
通过计算巢轻松部署Salt服务
Salt基于Python构建,是一个事件驱动的自动化工具和框架,用于部署、配置和管理复杂的IT系统。使用Salt来自动化公共基础设施管理任务,并确保基础设施的所有组件都以一致的期望状态运行。 本文向您介绍如何开通计算巢上的Salt服务,以及部署流程和使用说明。