java - 百钱百鸡小算法
生活随笔
收集整理的這篇文章主要介紹了
java - 百钱百鸡小算法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
傳送門: 袁咩咩的小小博客
百錢百雞是一個非常經典的不定方程問題,最早源于我國古代的《算經》,這是古代著名數學家張丘建首次提出的。百錢百雞問題原文如下:
雞翁一,值錢五,雞母一,值錢三,雞雛三,值錢一,百錢買白雞,問翁、母、雛各幾何?大致的意思是,攻擊5文錢一只,母雞3文錢1只,小雞3只1文錢,如果用100文錢買100只雞,那么公雞、母雞和小雞各應該買多少只呢?
分析
百錢買白雞問題中,有三個變量:公雞數量、母雞數量、小雞數量,分別設為x、y、z,這三者應該滿足如下關系:
x+y+z=100; 5x+3y+z/3=100;三個變量,兩個方程,因此這是一個不定方程組,這導致求解的結果不唯一。
示例代碼
編寫一段代碼,用于計算m錢n雞的問題,當m=100且n=100時,正好是百錢百雞問題。
package com.example;public class Code {public static void main(String[] args) {System.out.println("百錢百雞問題的解為:");buyChicken(100,100);}public static void buyChicken(int m,int n){for (int x = 0;x <= n;x++) //公雞數量for (int y = 0;y <= n;y++) { //母雞數量if (x + y <= n) { //公雞和母雞只和不能超過 nint z = n - x -y; //小雞數量, 用到第一個方程 x + y + z = nif (z%3 == 0 && x*5 + y*3 + z/3 == m) {//小雞數量必須為3的倍數, 且當第二個方程成立時, 得到正確結果System.out.println("公雞:" + x + " 母雞:" + y + " 小雞:" + z);}elsecontinue; //當結果不滿足條件時, 繼續下一次循環}elsebreak; //當公雞和母雞數超過 n 時, 退出當前循環}} }這樣,我們運行程序可以得到解:
百錢百雞問題的解為: 公雞:0 母雞:25 小雞:75 公雞:4 母雞:18 小雞:78 公雞:8 母雞:11 小雞:81 公雞:12 母雞:4 小雞:84這里我采用了窮舉的方法,將所有的值進行窮舉,尋找方程組的解。
轉載于:https://www.cnblogs.com/yuanmiemie/p/6638593.html
總結
以上是生活随笔為你收集整理的java - 百钱百鸡小算法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: sql 写query_为什么需要动态SQ
- 下一篇: ajaxSubmit