【问题标题】:ProjectEuler 9: Why this is not working ( Java )?ProjectEuler 9:为什么这不起作用(Java)?
【发布时间】:2016-10-17 07:01:51
【问题描述】:

问题说只有一个三元组存在: a+b+c=1000 和 a^2 + b^2 = c^2

我试图通过简单的蛮力找到这个三元组,但每次 a=1000、b=1000 和 c=1000 时它都会返回,我不明白为什么?

 public class Euler9
{

    static long Answer()
    {
        long a=1,b=1,c=1;

        outer:
        for( ; a<1000; ++a )
        {
            for( ; b<1000; ++b )
            {
                for( ; c<1000 ; ++c )
                {
                    if( (a+b+c == 1000) && (a*a+b*b == c*c) )
                    break outer;
                }
            }
        }

        System.out.println(a+" + "+b+" + "+c+" = "+(a+b+c));
        return a*b*c;
    }

}

【问题讨论】:

  • c 增加到 1000 后,它永远不会重置为 1,与 b 相同。因此,您不必探索所有可能的组合。

标签: java break goto


【解决方案1】:

你的 for 循环需要初始化它们的索引变量;您的中断需要在嵌套循环之后转到代码。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-14
    • 1970-01-01
    • 1970-01-01
    • 2012-11-17
    相关资源
    最近更新 更多