0--暴力破解法
概念:
通过直接列举所有可能情况的求解思路。因为计算机的运算速度优势,在手工计算看似不可能的处理方法,通过机器计算很可能十分轻松。只要所列举的情况数目不是特别巨大即可。
思路:
a) 枚举所有可能的情况
b) 用条件来筛选可能情况
案例:
package day1;
public class test {
public static void main(String[] args) {
example3();
}
/**
* 暴力破解法-鸡兔问题
* 鸡兔同笼,头共50,脚共120
* 问: 鸡兔各几何
* 结果: 鸡个数为: 40 兔个数为: 10
*/
public static void example1(){
// x表示鸡个数, y表示兔个数
for(int x=0; x<50; x++){
int y = 50 - x;
if(x*2 + y*4 == 120){
System.out.println("鸡个数为: " + x + " 兔个数为: " + y);
}
}
}
/**
* 暴力破解法-韩信点兵
* 1 只知道总人数在1000人左右
* 2 5人一组,余1人;7人一组,余2人; 8人一组,余3人
* 问: 总人几何
* 结果:
* 总人数为: 1171 总人数为: 1451 总人数为: 1731
*/
public static void example2(){
for(int i=900; i<2000; i++){
if(i%5 ==1 && i%7 ==2 && i%8 ==3){
System.out.println("总人数为: " + i);
}
}
}
/**
* 暴力破解法-马驮瓦
* 1 马共100头,瓦共100片
* 2 马分为: 大马,小马,,马驹
* 3 每匹大马每次能驮 3 块;每匹小马每次能驮 2 块瓦;小马驹每次 2个马驹驮 1块瓦
* 问: 各种马几何
* 结果:
* 第1次结果--->大马为: 1 大马为: 32 马驹为: 67
第2次结果--->大马为: 2 大马为: 30 马驹为: 68
第3次结果--->大马为: 4 大马为: 27 马驹为: 69
第4次结果--->大马为: 5 大马为: 25 马驹为: 70
第5次结果--->大马为: 7 大马为: 22 马驹为: 71
第6次结果--->大马为: 8 大马为: 20 马驹为: 72
第7次结果--->大马为: 10 大马为: 17 马驹为: 73
第8次结果--->大马为: 11 大马为: 15 马驹为: 74
第9次结果--->大马为: 13 大马为: 12 马驹为: 75
第10次结果--->大马为: 14 大马为: 10 马驹为: 76
第11次结果--->大马为: 16 大马为: 7 马驹为: 77
第12次结果--->大马为: 17 大马为: 5 马驹为: 78
第13次结果--->大马为: 19 大马为: 2 马驹为: 79
第14次结果--->大马为: 20 大马为: 0 马驹为: 80
*/
public static void example3(){
// 大马 x 小马y 马驹 z
int count = 0;
for(int x=0; x<34; x++){
for(int y=0; y<50; y++){
int z = 100 - x - y;
if(3*x + 2*y + z/2 == 100){
++count;
System.out.println("第" + count + "次结果--->大马为: " + x + " 大马为: " + y + " 马驹为: " + z);
}
}
}
}
}