`

编程算法基础_常用思路_0_暴力破解

 
阅读更多

 

 

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);
				}
			}
			
		}
	}
	
	

}

 

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics