窮舉算法是最簡單的一種算法,其依賴於計算機的強大計算能力,來窮盡每一種可能的窮狂,從而達到求解問題的目的。窮舉算法效率並不高,可是適合於一些沒有顯示規律可循的場合。使用場景如(密碼暴力破解)算法
窮舉算法的基本思想就是從全部可能的狀況中搜索正確的答案,其執行步驟以下:spa
在使用窮舉算法是,須要明確問題答案的範圍,這樣才能夠在指定範圍內搜索答案。指定範圍以後,就可使用循環語句和條件判斷語句逐步驗證候選答案的正確性,從而獲得須要的正確答案。code
窮舉法是最基本的算法思想,下面經過一個簡單的例子來分析窮舉算法的應用。雞兔同籠問題最先記載中1500年前的《孫子算經》,這是我國古代一個非要有名的問題。雞兔同籠問題的原文以下:it
今天雞兔同籠,上有三十五個頭,下有九十四足,問雞兔各幾何?io
這個問題的大體意思是:在一個籠子裏關着若干只雞和若干只兔,從上面看共有35個頭;從下面數共有94只腳。問籠中雞和兔的數量各是多少?class
經過分析能夠知道雞的數量應該爲0~35之間的數。這樣可使用窮舉法來逐個判斷是否符合。效率
public static int qiongju(int head, int foot){ int i,j,re; re=0; for (i = 0; i <= head; i++) { j = head-1; if (i*2+j*4 == foot) { re = 1; chicken = i; rabbit = j; } } return re; }
public class mian1 { /** * 今天雞兔同籠,上有三十五個頭,下有九十四足,問雞兔各幾何? */ static int chicken,rabbit; public static int qiongju(int head, int foot){ int i,j,re; re=0; for (i = 0; i <= head; i++) { j = head-i; //2x+4y =94; if (i*2+j*4 == foot) { re = 1; chicken = i; rabbit = j; } } return re; } public static void main(String[] args) { // System.out.println("窮舉法求解雞兔同籠問題"); // System.out.print("請輸入頭數:"); // Scanner scanner = new Scanner(System.in); // int head = scanner.nextInt(); // System.out.print("請輸入腳數:"); // int food = scanner.nextInt(); // re=qiongju(head,food); int re; re=qiongju(35,94); if(re == 1){ System.out.println("雞有多少隻"+chicken+";兔有多少隻"+rabbit); }else{ System.out.println("無解"); } } }
效果以下:搜索
雞有多少隻23;兔有多少隻12