在上一篇暴力破解算法中,只适合处理数据不是太多,计算量不大的情况。若计算量很大,计算机会执行很长的时间。
而枚举与剪枝算法是指在暴力破解前,通过条件判断来过滤一些逻辑上不符合要求的数据。减去一些无意义的运算分支,来减少计算量,提高效率。
例:
/*
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);
}
}
}