「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
英文地址,請注明出處:http://en.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;包含…