基本算法之窮舉算法
一.窮舉算法的基本思想
窮舉算法的基本思想就是從所有的可能的情況中搜索正確的答案,其執行步驟大致如下:
1.對於一種可能的情況,計算其結果;
2.判斷結果是否滿足要求,如果不滿足則執行第1步來搜索下一個可能的情況;如果滿足要求,則表示尋找到一個正確的答案。
注意事項:在使用窮舉算法時,需要明確問題答案的範圍,這樣才能在指定的範圍內搜索答案,指定範圍之後,就可以使用循環語句和條件判斷語句逐步驗證可能性答案的正確性,從而得到正確的答案。
二.典型實例
比較典型的窮舉算法的實例就是雞兔同籠的問題:
今有雞兔同籠,上有三十五頭,下有九十四足,問雞兔各幾何?
1.分析:
問題是需要計算雞的數量和兔的數量,通過分析可以知道雞的數量應該在0-35之間的數。這樣就可以使用窮舉的算法來逐個判斷是否符合要求,從而得到正確的答案。
2.參考代碼:
import java.util.Scanner;
public class Brute_force {
static int chicken,robbit;
public static int brute_force(int head,int foot) {
int re,i,j;
re=0;
for(i=0;i<=head;i++) { //循環
j=head-i;
if(i*2+j*4 == foot) { //判斷,尋找答案
re=1;
chicken = i;
robbit = j;
}
}
return re;
}
public static void main(String[] args) { //主方法
// TODO Auto-generated method stub
int re,head,foot;
System.out.println("窮舉法求解雞兔同籠問題:");
System.out.println("輸入頭數:"); //輸入頭數
Scanner input = new Scanner(System.in);
head= input.nextInt();
System.out.println("輸入足數:"); //輸入足數
foot=input.nextInt();
re=brute_force(head, foot);
if(re==1) {
System.out.println("雞有"+chicken+"只,兔有"+robbit+"只。");
}else {
System.out.println("無法求解!");
}
}
}
3.結果展示: