「Java案例」鸡兔同笼问题

案例解析

鸡兔同笼求解

《孙子算经》是中国古代重要的数学著作,成书于南北朝时期,其中就记载了一个有趣的问题:鸡和兔在同一个笼子里,鸡和兔共有n条腿, m个头,问鸡和兔各有多少只?编写一个程序实现鸡兔同笼问题。

# 源文件保存为“ChickenRabbitCage.java”
import java.util.Scanner;public class ChickenRabbitCage {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);System.out.print("请输入头的总数:");int heads = scanner.nextInt();System.out.print("请输入腿的总数:");int legs = scanner.nextInt();// 计算兔子的数量:(腿数 - 2*头数)/2int rabbits = (legs - 2 * heads) / 2;int chickens = heads - rabbits;// 验证结果是否合理if(rabbits >= 0 && chickens >= 0 && (2*chickens + 4*rabbits) == legs) {System.out.println("鸡有" + chickens + "只");System.out.println("兔有" + rabbits + "只");} else {System.out.println("无解,请检查输入数据是否合理");}scanner.close();}
}

运行示例:
输入头的总数10,腿的总数32

请输入头的总数:10
请输入腿的总数:32
鸡有4只
兔有6只

代码解析:

  • 使用Scanner获取用户输入的头和腿的数量
  • 根据数学公式计算兔子的数量:rabbits = (legs - 2*heads)/2
  • 鸡的数量就是总头数减去兔子的数量
  • 验证结果是否合理(非负数且腿数计算正确)
  • 输出结果或提示无解

枚举法求解

# 源文件保存为“EnumerationSolution.java”
import java.util.Scanner;public class EnumerationSolution {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);System.out.print("请输入头的总数:");int heads = scanner.nextInt();System.out.print("请输入腿的总数:");int legs = scanner.nextInt();boolean found = false;for(int rabbits = 0; rabbits <= heads; rabbits++) {int chickens = heads - rabbits;if(2*chickens + 4*rabbits == legs) {System.out.println("鸡有" + chickens + "只");System.out.println("兔有" + rabbits + "只");found = true;break;}}if(!found) {System.out.println("无解,请检查输入数据是否合理");}scanner.close();}
}

运行示例:
输入头的总数10,腿的总数32

请输入头的总数:10
请输入腿的总数:32
鸡有4只
兔有6只

代码亮点:

  • 使用枚举法逐个尝试可能的兔子数量
  • 更直观,不需要数学推导
  • 适合理解问题本质
  • 可以轻松扩展到更多动物的情况

三元组问题(鸡兔鸭同笼)

# 源文件保存为“ThreeAnimals.java”
import java.util.Scanner;public class ThreeAnimals {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);System.out.print("请输入头的总数:");int heads = scanner.nextInt();System.out.print("请输入腿的总数:");int legs = scanner.nextInt();System.out.print("请输入鸭子的数量(已知):");int ducks = scanner.nextInt();int remainingHeads = heads - ducks;int remainingLegs = legs - 2 * ducks;if(remainingHeads < 0 || remainingLegs < 0) {System.out.println("鸭子数量输入不合理");return;}int rabbits = (remainingLegs - 2 * remainingHeads) / 2;int chickens = remainingHeads - rabbits;if(rabbits >= 0 && chickens >= 0 && (2*chickens + 4*rabbits + 2*ducks) == legs) {System.out.println("鸡有" + chickens + "只");System.out.println("兔有" + rabbits + "只");System.out.println("鸭有" + ducks + "只");} else {System.out.println("无解,请检查输入数据是否合理");}scanner.close();}
}

运行结果
输入头的总数10,腿的总数32,鸭子数量3

请输入头的总数:12
请输入腿的总数:32
请输入鸭子的数量(已知):3
鸡有5只
兔有4只
鸭有3只

代码亮点:

  • 扩展原问题,增加鸭子
  • 展示了如何逐步解决更复杂的问题
  • 需要先减去已知动物的影响
  • 更贴近实际应用场景

操作练习题

蜘蛛蚂蚁问题

要求:

  • 笼子里有蜘蛛和蚂蚁
  • 蜘蛛8条腿,蚂蚁6条腿
  • 输入头和腿的总数
  • 计算蜘蛛和蚂蚁的数量

参考代码:

# 源文件保存为“SpiderAnt.java”
import java.util.Scanner;public class SpiderAnt {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);System.out.print("请输入头的总数:");int heads = scanner.nextInt();System.out.print("请输入腿的总数:");int legs = scanner.nextInt();int spiders = (legs - 6 * heads) / 2;int ants = heads - spiders;if(spiders >= 0 && ants >= 0 && (8*spiders + 6*ants) == legs) {System.out.println("蜘蛛有" + spiders + "只");System.out.println("蚂蚁有" + ants + "只");} else {System.out.println("无解,请检查输入数据是否合理");}scanner.close();}
}

运行结果
输入头的总数5,腿的总数34

请输入头的总数:5
请输入腿的总数:34
蜘蛛有2只
蚂蚁有3只

多解情况处理

要求:

  • 笼子里有鸡、兔和羊
  • 鸡2条腿,兔4条腿,羊4条腿
  • 输入头和腿的总数
  • 找出所有可能的动物组合

参考代码:

# 源文件保存为“MultipleSolutions.java”
import java.util.Scanner;public class MultipleSolutions {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);System.out.print("请输入头的总数:");int heads = scanner.nextInt();System.out.print("请输入腿的总数:");int legs = scanner.nextInt();System.out.println("可能的组合:");boolean found = false;for(int sheep = 0; sheep <= heads; sheep++) {for(int rabbits = 0; rabbits <= heads - sheep; rabbits++) {int chickens = heads - sheep - rabbits;if(2*chickens + 4*rabbits + 4*sheep == legs) {System.out.printf("鸡%d只,兔%d只,羊%d只\n", chickens, rabbits, sheep);found = true;}}}if(!found) {System.out.println("无解,请检查输入数据是否合理");}scanner.close();}
}

运行结果
输入头的总数8和腿的总数18

请输入头的总数:8
请输入腿的总数:18
可能的组合:
鸡7只,兔1只,羊0只
鸡7只,兔0只,羊1只

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

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

相关文章

BLDC电机-运动控制---stm32时钟树定时器SYSTICKRTC的学习

一、时钟树 二、基本定时器 三、通用定时器 四、高级定时器 五、SYSTICK 六、RTC

Implementing a User-Defined Preconditioner in PETSc

文章目录Implementing a User-Defined Preconditioner in PETScBasic ApproachExample ImplementationUsing Your PreconditionerAdvanced OptionsImportant NotesUsing PCShell to Implement User-Defined Preconditioners in PETScBasic Implementation StepsAdvanced Featur…

DotNetBrowser 3.3.0 版本发布啦!

#Chromium 137 安全修复一次调用即可下载 URL更新了 Widevine APIDOM 元素绝对边界 &#x1f517; 点击此处了解更多详情。 &#x1f193; 获取 30 天免费试用。

Android-自定义View的实战学习总结

一、自定义View歌词界面LrcView 类-->自定义的歌词视图1. 构造函数和属性初始化自定义 View 通常需要提供多个构造函数以支持不同的初始化方式。在 LrcView 中&#xff0c;提供了四个构造函数&#xff0c;最终调用 super 父类构造函数完成初始化&#xff0c; context.obtain…

Maven 在 Eclipse 中的使用指南

Maven 在 Eclipse 中的使用指南 概述 Maven 是一个强大的构建自动化工具,用于项目管理和构建。它简化了项目构建、依赖管理和项目报告等任务。Eclipse 是一个流行的集成开发环境(IDE),支持多种编程语言,包括 Java。本文将详细介绍如何在 Eclipse 中使用 Maven 进行项目管…

zxing去白边

2025年了&#xff0c;可能干不了几年了&#xff0c;还能写这种文章还是有点可笑。 背景 zxing库生成的二维码自带白边 分析 生产二维码主要分两步&#xff1a; 1.用QRCodeWriter生成BitMatrix信息 2.根据信息生成bitmap 问题在1。 生成二维码的尺寸实际是有一些规格的&a…

Linux操作系统之文件(三):缓冲区

前言&#xff1a; 上节课我们讲授重定向的概念时&#xff0c;曾提到了一点缓冲区的概念。本文将会为大家更详细的带来缓冲区的有关内容&#xff1a;用户级缓冲区是什么&#xff0c;以及其与内核级缓冲区的关系&#xff0c;最后&#xff0c;我会为大家模拟实现一下stdio.h的关于…

Linux云计算基础篇(7)

一、< 输入重定向 wc -l < filelist .txt 统计数据&#xff0c;从file这个文件拿结果。 二、tr 转换字符命令 $ tr A-Za-z<.bash_profile 将bash_profile文件中的大写字符全部转成小写字符 三、管道符&#xff08;|&#xff09; com…

【学习笔记】Lean4基础 ing

文章目录 概述参考文档运行程序elan 命令行工具lean 命令行工具lake 命令行工具运行单文件程序Hello, world!验证 Lean4 证明 运行多文件项目 Lean4 基础语法注释表达式求值变量和定义定义类型变量 定义函数命名规则命名空间数据类型结构体构造子模式匹配多态List 列表Option 可…

FPGA实现40G网卡NIC,基于PCIE4C+40G/50G Ethernet subsystem架构,提供工程源码和技术支持

目录 1、前言工程概述免责声明 3、相关方案推荐我已有的所有工程源码总目录----方便你快速找到自己喜欢的项目我这里已有的以太网方案 4、工程详细设计方案工程设计原理框图测试用电脑PClE4CDMA40G/50G Ethernet subsystem工程源码架构驱动和测试文件 5、Vivado工程详解1详解&a…

SAP从入门到放弃系列之流程管理概述

文章目录前言1.Process Management&#xff08;过程管理&#xff09;2.关键术语2.1Control recipe destination2.2 Process instruction characteristic2.3 Process message characteristic2.4 Process instruction category2.5 Process message category2.6 PI sheet3.关键配置…

RCLAMP0554S.TCT升特Semtech 5通道TVS二极管,0.5pF+20kV防护,超高速接口!

RCLAMP0554S.TCT&#xff08;Semtech&#xff09;产品解析与推广文案 一、产品定位 RCLAMP0554S.TCT是Semtech&#xff08;升特半导体&#xff09;推出的5通道超低电容TVS二极管阵列&#xff0c;专为超高速数据接口&#xff08;USB4/雷电4/HDMI 2.1&#xff09;提供静电放电&a…

【人工智能】DeepSeek的AI实验室:解锁大语言模型的未来

《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门! 解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界 DeepSeek作为中国AI领域的先锋,以其开源大语言模型(LLM)DeepSeek-V3和DeepSeek-R1在全球AI研究中掀起波澜。本文深入探讨DeepSeek AI实验…

nacos+nginx动态配置大文件上传限制

前言 今天还要跟大家分享的一个点就是微服务网关gateway用webflux响应式不用servlet后&#xff0c;引发的一个忽略点差点在演示的时候炸锅&#xff0c;也不多讲废话&#xff0c;说说现象&#xff0c;说说处理就了事。 一、上传超过20MB的视频报错 配置在nacos里&#xff0c;读…

mr 任务运行及jar

mainclass如下&#xff1a;LoggingDriver

Python 数据分析:numpy,抽提,整数数组索引与基本索引扩展(元组传参)。听故事学知识点怎么这么容易?

目录1 代码示例2 欢迎纠错3 论文写作/Python 学习智能体------以下关于 Markdown 编辑器新的改变功能快捷键合理的创建标题&#xff0c;有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右Sm…

ECU开发工具链1.10版:更强大的测量、校准与数据分析体验.

汽车电子开发与测试领域&#xff0c;高效、精准且安全的工具是成功的基石。DiagRA X 作为一款广受认可的 Windows 平台综合解决方案&#xff0c;持续引领行业标准。其最新发布的 1.10 版本带来了显著的功能增强与用户体验优化&#xff0c;进一步巩固了其在 ECU 测量、校准、刷写…

Qt C++串口SerialPort通讯发送指令读写NFC M1卡

本示例使用的发卡器&#xff1a;https://item.taobao.com/item.htm?spma21dvs.23580594.0.0.52de2c1bVIuGpf&ftt&id18645495882 一、确定已安装Qt Serial Port组件 二、在.pro项目文件声明引用Serialport组件 三、在.h头文件内引用Serialport组件 四、在.cpp程序中实…

Go 语言开发中用户密码加密存储的最佳实践

在现代 Web 应用开发中&#xff0c;用户密码的安全存储是系统安全的重要环节。本文将结合 Go 语言和 GORM 框架&#xff0c;详细介绍用户密码加密存储的完整解决方案&#xff0c;包括数据库模型设计、加密算法选择、盐值加密实现等关键技术点。 一、数据库模型设计与 GORM 实践…

优化Facebook广告投放的五大关键策略

一、精确筛选目标国家用户在Audience的locations设置目标国家时&#xff0c;务必勾选"People living in this location"选项。系统默认会选择"People living in this location or recently in this location"&#xff0c;这会扩大受众范围&#xff0c;包含…