窮舉法:java
又叫枚舉法。算法
窮舉法的基本思想是根據題目的部分條件肯定答案的大體範圍,並在此範圍內對全部可能的狀況逐一驗證,直到所有狀況驗證完畢。編程
也許有些人認爲,窮舉法未免太"笨拙",的確,窮舉法有着其致命的缺點------效率低下,可是,在一些領域,利用計算機高速運算能力與窮舉法相結合可以解決某些無規律的問題。另外,常常有黑客利用窮舉法破解密碼。所以,這樣看似"笨拙"的窮舉法,有有時候可以發揮大做用。函數
下面來看一下窮舉法的簡單應用it
雞兔同籠io
雞兔同籠,是我國古代著名趣題之一,記載於《孫子算經》之中。class
其原題是:今有雉兔同籠,上有三十五頭,下有九十四足,問雉兔各幾何?效率
大體意思是:有雞和兔在同一籠子,已知有35個頭,94只腳,問雞有幾隻,兔有幾隻?import
雞兔同籠問題求解:變量
分析:因爲此問題沒有明顯的規律,所以能夠考慮採用簡單粗暴的窮舉法。在必定範圍內將全部可能狀況一一嘗試
java代碼以下
import java.util.*;
public class JiTuTongLong{
public static int chicken,rabbit,re;
/*定義爲類變量,便於主函數訪問。*/
public static void main(String[] args){
Scanner s=new Scanner(System.in);
System.out.println("請輸入頭個數");
int head=s.nextInt();
System.out.println("請輸入腳只數");
int foot=s.nextInt();
qiongju(head,foot);
if(re==1){
System.out.println("雞有"+chicken+"只\t兔子有"+rabbit+"只");
}
else{
System.out.println("沒法求解");
}
}
public static int qiongju(int head,int foot){
int i,j;
for(i=0;i<=head;i++){
j=head-i;
if(2*i+4*j==foot){
/*若是知足條件就向chicken,rabbit賦值。*/
chicken=i;
rabbit=j;
re=1;//用於判斷是否有解
}
}
return re;
}
}
就這樣,經過利用計算機強大的計算能力,一步一步地嘗試,直到得出結果。
好了,本期的《每日一算法》就講到這裏,但願你們能夠多多支持哦!
//注:因爲本人接觸編程不久,如有錯誤或更好建議,歡迎指正或提出建議。