【发布时间】:2018-04-18 01:41:13
【问题描述】:
为什么
for (
a <- 1 to 1000;
b <- 1 to 1000 - a;
c <- 1 to 1000 - a - b;
if (a * a + b * b == c * c && a + b + c == 1000)
) println((a, b, c, a * b * c))
266 毫秒
然后慢一点:
for (a <- 1 to 1000)
for (b <- 1 to 1000 - a)
for (c <- 1 to 1000 - a - b)
if (a * a + b * b == c * c)
if (a + b + c == 1000)
println((a, b, c, a * b * c))
62 毫秒
如果我理解正确,这应该是一样的吗?
处理答案后的解决方案:
for (
a <- 1 to 1000;
b <- 1 to (1000 - a)
) {
val c = (1000 - a - b)
if (a * a + b * b == c * c)
println((a, b, c, a * b * c))
}
9 毫秒
【问题讨论】:
-
至少编写您使用的 Scala 版本真的很有用。最多您的操作系统和其他相关信息。
-
我使用的是 Windows 7 和 2.9.2 版,使用带有 jre7 的 eclipse。
-
寻找解决方案的奇怪方式——你需要
a+b+c==1000,那么为什么不直接设置c = 1000 - a - b呢? (显然这不是问题的答案......)
标签: performance algorithm scala