算法刷題-百錢買百雞問題-JAVA

0x00 引言

爲獲取一個良好的算法思維,以及不再成爲一個腳本小子,爭取每天一道算法題,培養自己的邏輯思維,溫顧各類型語言語法知識。

題解只寫自己理解的解法,其他解法不再增加。題目與解析均在代碼裏面。

0x01 難度等級

簡單

0x02 代碼

package 簡單;

import java.util.Scanner;

/*
*
* 公元五世紀,
* 我國古代數學家張丘建在《算經》一書中提出了“百雞問題”:
* 雞翁一值錢五,雞母一值錢三,雞雛三值錢一。百錢買百雞,問雞翁、雞母、雞雛各幾何?
現要求你打印出所有花一百元買一百隻雞的方式。
*

*示例1
輸入:
1

輸出:
0 25 75
4 18 78
8 11 81
12 4 84

* 5x+3y+1/3z=100
* 15x+9y+z=300
* z=100-x-y
*
* 15x+9y+100-x-y=14x+8y+100=300
*
* 14x+8y=200
* 7x+4y=100
* x+y+z=100
*上面兩個式子化簡可得:7x+4y=100;0<=x<=14,0<=y<=25
*x>=0y=25
*
* y>=0 x=14
* */
public class 百錢買百雞問題 {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        int a=sc.nextInt();
        int z = 0;
        for (int x = 0; x <= 14; x++) {
            for (int y = 0; y <= 25; y++) {
                if (7 * x + 4 * y == 100) {
                    z = 100 - x - y;
                    System.out.print(x + " " + y + " " + z);
                    System.out.println();
                }

            }
        }
    }
}

0x03 算法思想

(1)主要是解一個三元一次方程,然後用雞的生命不能爲負值來作爲臨界點

(2)雙層for循環的使用

0x04 運行結果

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章