穷举法: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;
}
}
就这样,经过利用计算机强大的计算能力,一步一步地尝试,直到得出结果。
好了,本期的《每日一算法》就讲到这里,但愿你们能够多多支持哦!
//注:因为本人接触编程不久,如有错误或更好建议,欢迎指正或提出建议。