穷举算法是最简单的一种算法,其依赖于计算机的强大计算能力,来穷尽每一种可能的穷狂,从而达到求解问题的目的。穷举算法效率并不高,可是适合于一些没有显示规律可循的场合。使用场景如(密码暴力破解)java
穷举算法的基本思想就是从全部可能的状况中搜索正确的答案,其执行步骤以下:算法
在使用穷举算法是,须要明确问题答案的范围,这样才能够在指定范围内搜索答案。指定范围以后,就可使用循环语句和条件判断语句逐步验证候选答案的正确性,从而获得须要的正确答案。spa
穷举法是最基本的算法思想,下面经过一个简单的例子来分析穷举算法的应用。鸡兔同笼问题最先记载中1500年前的《孙子算经》,这是我国古代一个非要有名的问题。鸡兔同笼问题的原文以下:code
今天鸡兔同笼,上有三十五个头,下有九十四足,问鸡兔各几何?it
这个问题的大体意思是:在一个笼子里关着若干只鸡和若干只兔,从上面看共有35个头;从下面数共有94只脚。问笼中鸡和兔的数量各是多少?io
经过分析能够知道鸡的数量应该为0~35之间的数。这样可使用穷举法来逐个判断是否符合。class
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