窮舉算法是最基本的算法思想广料,我們通過一個簡單的例子來看看窮舉算法的應(yīng)用闷供。雞兔同籠問題:
今有雞兔同籠,上有三十五頭,下有九十四足待锈,問雞兔各幾何舶沛?
通過分析我們可以知道雞的數(shù)量應(yīng)該為0~35之間的數(shù)罩抗。這樣求摇,我們可以使用窮舉法來逐個判斷是否符合,從而搜索答案辉巡。
import java.util.Scanner;
public class Solution {
private static int re = 0;
private static int chicken = 0;
private static int rabbit = 0;
public static void solve(int head, int foot) {// 窮舉算法
for (int i = 0; i <= head; ++i) {
int j = head - i;
if (i * 2 + j * 4 == foot) {
re = 1;
chicken = i; // chicken代表雞的個數(shù)
rabbit = j; // rabbit代表兔子的個數(shù)
}
}
}
public static void main(String[] args) {
int head, foot;
System.out.println("窮舉法解決雞兔同籠問題~");
Scanner scanner = new Scanner(System.in);
System.out.println("請輸入頭的個數(shù):");
head = scanner.nextInt();
System.out.println("請輸入腳的個數(shù):");
foot = scanner.nextInt();
solve(head, foot);
if (re == 1){
System.out.println("雞的個數(shù)為:" + chicken + "只恨憎,兔子的個數(shù)為:" + rabbit + "只。");
} else {
System.out.println("無解!!");
}
}
}
運行結(jié)果