枚举与剪枝算法学习笔记

在上一篇暴力破解算法中,只适合处理数据不是太多,计算量不大的情况。若计算量很大,计算机会执行很长的时间。

 

而枚举与剪枝算法是指在暴力破解前,通过条件判断来过滤一些逻辑上不符合要求的数据。减去一些无意义的运算分支,来减少计算量,提高效率。

 

例:

/*
 100-1000中 找出平方之后的尾数还是本身的整数
*/

public class T2
{
	public static void main(String[] args)
	{		
		for(int i=100; i<1000; i++){             //暴力破解
			if(i*i % 1000==i) System.out.println(i + "," + i*i);
		}
	}
}



 


 

/*
 100-1000中 找出平方之后的尾数还是本身的整数
*/

public class T2
{
	public static void main(String[] args)
	{
		
		for(int i=100; i<1000; i++){
			// 仔细观察   这样的数字的尾数有什么特征? 0 1 5 6
			// 进一步,其末尾2位数必须是 25 76
			// 更进一步,其末尾3位数必须是?。。。。
                           if(...) 剪枝动作
			if(i*i % 1000==i) System.out.println(i + "," + i*i);
		}
	}
}


 



 

你可能感兴趣的:(【编程算法基础】)