Java算法-窮舉算法思想

  窮舉算法是最簡單的一種算法,其依賴於計算機的強大計算能力,來窮盡每一種可能的窮狂,從而達到求解問題的目的。窮舉算法效率並不高,可是適合於一些沒有顯示規律可循的場合。使用場景如(密碼暴力破解算法

1、窮舉算法基本思想

    窮舉算法的基本思想就是從全部可能的狀況中搜索正確的答案,其執行步驟以下:spa

  • 1.對於一種可能的狀況,計算其結果。
  • 2.判斷結果是否知足要求,若是不知足則執行上一步來搜索下一個可能的狀況;若是知足要求,則表示尋找到了一個正確答案。

    在使用窮舉算法是,須要明確問題答案的範圍,這樣才能夠在指定範圍內搜索答案。指定範圍以後,就可使用循環語句和條件判斷語句逐步驗證候選答案的正確性,從而獲得須要的正確答案。code

2、窮舉算法實例

    窮舉法是最基本的算法思想,下面經過一個簡單的例子來分析窮舉算法的應用。雞兔同籠問題最先記載中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
相關文章
相關標籤/搜索