711问题-优化蛮力求解
程序员文章站
2024-03-16 11:55:40
...
优化711问题
我们可以自定义x,y,z的大小为判断条件,检测寻找到第一个结果所用的次数,发现明显快很多,代码将判断条件改了即可,可以自己试试
public class issue1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
//美国有一个连锁店叫做711店,将四个数乘起来为7.11,加起来也是7.11求这四个数
//通过检测三次循环比四次明显快很多
int number=1;
for(double x=2;x<711;x++) {
for(double y=1;y<711-x;y++) {
for(double z=1;z<711-x-y;z++){
// for(int w=1 ;w<711;w++) {
// if ((x*y*z*w)==711000000&&(x+y+z+w)==711) {
// System.out.println("x="+x+",y="+y+",z="+z+",w="+w);
// }
// }
number++;
double w=711-x-y-z;
if ((x*y*z*w)==711000000&&(x+y+z+w)==711) {
System.out.println("寻找次数为: "+number);
System.out.println("x="+(x/100)+",y="+(y/100)+",z="+(z/100)+",w="+(w/100));
}
}
}
}
}
}
结果如图所示,找出来第一个结果用了24984860次,通常我们想到的暴力方法就是用四个for循环就能搞定,但是这样速度特别慢,可以上机试试。
因此我们通过这一策略优化改进,减少算法复杂度,变成三个for循环
**
上一篇: Java——03——类和对象
下一篇: 六大排序算法及Java实现