穷举算法
穷举算法依赖计算机的强大计算能力,来穷尽每一种可能的情况,从而达到求解问题的目的。穷举算法效率不高,但是适合一些没有明显规律可循的场合。
基本思想
- 对于一种可能的情况,计算其结果。
- 判断结果是否满足要求,如果不满足则执行第1条来搜索下一个可能的情况;如果满足要求,则表示寻找到一个正确答案。
在使用穷举算法时,需要明确问题的答案范围,这样才能指定范围搜索答案。指定范围后,才能用循环语句和判断语句逐步验证候选答案的正确性,从而得到需要的正确答案。
实例:
穷举法算鸡头同笼问题。在一个笼子里关着若干只鸡和若干只兔子,从头上数有35个头;从下面数有94只脚。求有多少鸡多少兔。
public class P3_1 {
static int chichen,habbit;// chichen 代表鸡的个数,habbit 代表兔的个数
public static int qiongju(int head,int foot){
int re,i,j;
re = 0;
for (i = 0; i< head; i++) {
j=head-i;
if (i*2+j*4 == foot){
re = 1;
chichen = i;
habbit = j;
}
}
return re;
}
public static void main(String[] args) {
int re,head,foot;
System.out.println("穷举法求解鸡兔同笼问题:");
System.out.println("请输入头数");
Scanner input = new Scanner(System.in);
head = input.nextInt();
System.out.println("请输入头数");
foot = input.nextInt();
re = qiongju(head,foot);
if(re ==1 ){
System.out.println("鸡有"+chichen+"只,兔有"+habbit+"只");
}else {
System.out.println("无法求解!");
}
}
}
穷举法求解鸡兔同笼问题:
请输入头数
35
请输入头数
94
鸡有23只,兔有12只