欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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循环

**
711问题-优化蛮力求解