算法之暴力破解法(穷举法)一

一,什么是暴力破解法?

  暴力破解法,就是把所有条件,相关情况统统考虑进去,让计算机进行检索,指导得出与之所有条件符合的结果

  (但是,暴力破解法对计算机资源耗费严重,如果条件太复杂,运算速度缓慢,为了解决这一问题,我们可以事先把与之不相关的条件进行限制,减少计算机的运算量



二,暴力破解法应用

       1.鸡兔同笼

       问题:有鸡兔共50头,共有脚120只。  问 :鸡兔分别的数量?

     【理解】

      鸡的头和兔子的头数想加为50个,情况数量并不是很多,最多50个最少0个,是有限的,这个问题就可以使用暴力破解的方法来解决。

     【代码如下】

public class OneDay {
	public static void main(String[] args) {
	   //x为鸡的数目,最小是0,最大为50,在一个循环中一个一个的测试,看哪一个条件能够满足题目要求
		for(int x=0;x<=50;x++){
              			int y=50-x;
			if(x*2+y*4==120)
			{
				System.out.println("x="+x+"y="+y);
				
			}
			
		}
			  
			  
		
	}
}

        【答案】

        x=40   y=10

 2.韩信点兵

   韩信知道部队人数大约1000人左右,具体数字不详,5人一组剩余1人,7个人一组还剩两个人,8个人一组还剩3个人,问:这支部队有多少人?

    【理解】

    可以使用暴力破解法的方式,枚举所有情况,显然人数就是我们列举的情况;

     【代码如下】

public class OneDay {
	public static void main(String[] args) {
	
	     for(int i=0;i<=2000;i++)
	     {
	    	 if(i%5==1 && i%7==2 && i%8==3)
	    	 {
	    		 System.out.println(i);
	    		 
	    	 }
	    	 
	     }
		
	}
}
 【答案】
51
331
611
891

1171


【总结】

暴力破解法:仅仅就是对所有可能的情况逐一的去列举,并且用条件进行筛选,把满足条件的列举出来,就可以了。

你可能感兴趣的:(算法之暴力破解法(穷举法)一)