|
|
1
9
在优化之前进行分析是很好的,但是事实上
你现在只计算基本三角形。相反,问问你自己:你能有效地数数吗? 全部的 周长为A+B+C=N的三角形(不一定是原始三角形)?(运行时间o(n)将执行“您当前的算法是”(n) 三 )这样做之后,您对哪些三角形进行了过度计算?例如,有多少个三角形,用p来划分边?(提示:A+B+C=N<=>(A/P)+(B/P)+(C/P)=N/P.)和 so on . 编辑 :在解决了这个问题并检查了ProjectEuler上的线程之后,我发现对于这个问题还有其他一些不错的方法,但是上面的方法是最常见的,而且是有效的。在第一部分中,你可以直接计算它(有些人已经做了,这当然是可行的),或者你 可以 找到这个额外的提示/技巧有帮助:
另外/或者,尝试直接将这个数字t(n)与较小的数字t(n-k)联系起来,得到一个递推关系。 (当然,如果你在谷歌上搜索的话,你也可以找到一些非常简单的公式,但是其中有什么有趣的呢?) |
|
|
2
4
您可以改进以下几点:
不幸的是,即使有了这些变化和其他答案中提到的变化,这可能会太慢。我相信真正的解决方案不会列举所有可能的三角形,而是以某种方式将它们分组计算。 |
|
|
3
2
蛮力解决方案往往很慢:) 减少计算的提示:
编辑: 考虑到@interjay的评论:
例如,如果
|
|
4
0
除了尼克·D的回答,这会让你不再费心计算
|
|
|
5
0
作为一个小小的改进,您可以插入一些特殊的案例,例如
用这两个
|
|
|
MaPo · Linux,设置锁定ICMP_过滤器选项 8 月前 |
|
Doohyeon Won · 内联函数上的奇怪现象?[关闭] 8 月前 |
|
|
Bobby · 复合字面值总是左值吗? 8 月前 |
|
9-Pin · C: 嵌套结构的堆栈内存分配 8 月前 |