当前位置: 首页 > news >正文

西北工业大学oj题-兔子生崽

题目描述:

兔子生崽问题。假设一对小兔的成熟期是一个月,即一个月可长成成兔,每对成兔每个月可以生一对小兔,一对新生的小兔从第二个月起就开始生兔子,试问从一对兔子开始繁殖,一年以后可有多少对兔子?

这道题目一眼看过去就是典型的递归问题,代码如下

public class RabbitReproduction {public static void main(String[] args) {int months = 12;System.out.println("After " + months + " months, there will be " + rabbitPairs(months) + " pairs of rabbits.");}public static int rabbitPairs(int n) {if (n == 1 || n == 2) {return 1;}return rabbitPairs(n - 1) + rabbitPairs(n - 2);}
}

递归方法:rabbitPairs 使用递归来计算每个月的兔子对数。这个问题类似于斐波那契数列:
第一个月和第二个月有 1 对兔子。
从第三个月开始,每个月的兔子对数等于前两个月的兔子对数之和。

但是这道题目虽然简单,但是递归方法可能会导致性能问题。

public class RabbitReproduction {public static void main(String[] args) {int months = 12;System.out.println("After " + months + " months, there will be " + rabbitPairs(months) + " pairs of rabbits.");}public static int rabbitPairs(int n) {if (n == 1 || n == 2) {return 1;}int[] dp = new int[n + 1];dp[1] = 1;dp[2] = 1;for (int i = 3; i <= n; i++) {dp[i] = dp[i - 1] + dp[i - 2];}return dp[n];}
}
  • 数组 dp:用于存储每个月的兔子对数。
  • 初始条件dp[1] 和 dp[2] 都设为 1,因为第一个月和第二个月只有一对兔子。
  • 状态转移方程dp[i] = dp[i - 1] + dp[i - 2]。这表示每个月的兔子对数等于前一个月和前两个月兔子对数之和。
  • 循环:从第三个月开始逐月计算,直至第 n 个月

这种方法主要是避免了递归带来的性能问题,效率更高。

http://www.lryc.cn/news/430868.html

相关文章:

  • 【Go语言成长之路】 模糊测试
  • 异或运算的高级应用和Briankernighan算法
  • 音视频入门基础:WAV专题(9)——FFmpeg源码中计算WAV音频文件每个packet的duration和duration_time的实现
  • AI写的论文查重率高吗?分享6款实测AI论文生成免费网站
  • 【专题】2024年8月中国企业跨境、出海、国际化、全球化行业报告汇总PDF合集分享(附原数据表)
  • [算法]单调栈解法
  • 构建数据安全防线:MySQL数据备份策略的文档化实践
  • 4. GIS前端工程师岗位职责、技术要求和常见面试题
  • 软件测试-Selenium+python自动化测试
  • SpringBoot与Minio的极速之旅:解锁文件切片上传新境界
  • Java 7.3 - 分布式 id
  • 144. 腾讯云Redis数据库
  • 基于单片机的自动浇花控制写设计任务书
  • 从零到精通:用C++ STL string优化代码
  • 鸿蒙轻内核M核源码分析系列五 时间管理
  • Python Opencv鼠标回调
  • Ubuntu环境的MySql下载安装
  • Android系统去掉WIFI模块
  • 代码随想录 -- 二叉树 -- 翻转二叉树
  • Node.js之文件复制
  • 新手c语言讲解及题目分享(十六)--文件系统专项练习
  • RabbitMQ本地Ubuntu系统环境部署与无公网IP远程连接服务端实战演示
  • [C++#28][多态] 两个条件 | 虚函数表 | 抽象类 | override 和 final | 重载 重写 重定义
  • List 集合指定值升序降序排列Comparator实现
  • 【Day07】
  • shell 控制台显示彩色文字的方法
  • Nginx: 缓存, 不缓存特定内容和缓存失效降低上游压力策略及其配置示例
  • Python 全栈系列266 Kafka服务的Docker搭建
  • 集合框架,List常用API,栈和队列初识
  • 构建全景式智慧文旅生态:EasyCVR视频汇聚平台与AR/VR技术的深度融合实践