一、枚举法:
在程序设计中,经常需要根据给定的一组条件秋满足条件的解,若问题的解可以用现有的公式,或者按照一定的规则规律求得,那么就可以很容易地写出相应的程序代码。
枚举法:也称为穷举法,其基本思想是先依据题目给定的条件将所有可能的解列举出阿里,然后用其余的条件对所有可能的解进行逐一验证,验证是否是问题的解,删去不符合条件的解,剩下符合条件的解就是整个问题的解。
枚举法求解有三个条件:
a、有明显的枚举方位,且求解对象是有限的;
b、可以按照某种规则或规律列举对象;
c、有枚举规则。
【实例 3.17】采用枚举法实现打印出100~999所有的水仙花数,所谓水仙花数是指一个三位数,其个位数字立方和等于该数本身。
代码如下:
public class Ex3_17 {
public static void main(String[] args) {
for (int m = 100; m <= 999; m++) {
int x = m % 10;
int y = m / 10 % 10;
int z = m / 100;
if(m==Math.pow(x, 3) + Math.pow(y, 3) + Math.pow(z, 3)){
System.out.println("水仙花数m=" + m);
}
}
}
}
【实例3.18】“百钱买鸡”问题。有一个人由一百块钱,打算买一百只鸡。到市场一看,公鸡每只5元,母鸡每只3元,小鸡1元买3只,问什么样的买法,才能刚好用一百块钱苗一百只鸡。
public class Ex3_18 {
public static void main(String[] args) {
int x = 0;
while( x <= 19){
int y = 0;
while( y <= 33){
int z = 100 - x - y;
if (x*5+y*3+z/3==100 && z%3==0) {
System.out.print("公鸡数:" + x + " | ");
System.out.print("母鸡数:" + y + " | ");
System.out.println("小鸡数" + z + " | ");
}
y++; }
x++; }
}
}