【问题标题】:Project Euler #163 understanding欧拉计划 #163 理解
【发布时间】:2010-05-13 21:36:57
【问题描述】:

我花了很长时间寻找this problem 的解决方案。我画了大量的交叉阴影线三角形,在简单的情况下数了三角形,并搜索了某种模式。不幸的是,我撞到了墙上。我很确定我的编程/数学技能不符合这个问题的先决条件。

所以我在网上找到了一个解决方案,以便访问论坛。我根本不了解大多数方法,有些方法似乎太复杂了。

谁能给我这个问题的理解?其中一种方法,可在此处找到:http://www.math.uni-bielefeld.de/~sillke/SEQUENCES/grid-triangles(问题 C) 允许使用单个函数。

他们是如何想出这个解决方案的?在这一点上,我真的很想了解这个有趣问题背后的一些概念。我知道查找解决方案不是欧拉精神的一部分,但我很确定无论如何我都不会解决这个问题。

【问题讨论】:

  • #163 的链接会有所帮助:projecteuler.net/index.php?section=problems&id=163
  • “我很确定我的编程/数学技能不符合这个问题的先决条件。” - 不要让这个问题影响到你,编程技巧与这个问题无关。事实上,我会说连 计算机科学 技能都与此无关,这纯粹是一个数学问题。
  • mathoverflow 在这里可能会更有帮助。
  • @Martin:不,不会。在将人们链接到该站点之前,请始终至少阅读该站点的常见问题解答; MathOverflow 适用于研究型研究生水平,
  • 哎呀,是的,gman 是对的。 math.reddit.com,然后。

标签: algorithm math geometry combinatorics


【解决方案1】:

这本质上是枚举组合学中的一个问题,它是计算事物组合的艺术。这是一个美丽的主题,但可能需要一些热身才能了解您提供的参考资料中的忍者技巧。

另一方面,该问题的解决方案线程中的 cmets 表明,许多人已使用蛮力方法解决了该问题。最常见的技巧之一是获取图中三条线的所有可能组合,并查看它们是否会产生位于最大三角形内的三角形。

您可以通过注意线条位于六个方向之一来大大减少搜索空间。由于包含两条平行线的线组合不会产生三角形,因此您可以对三元线进行迭代,以便三元组中的每条线都有不同的方向。

给定三条线,计算它们的交点。你会有三种可能 1) 线是重合的——它们都在一个公共点相交 2)两条线相交于三角形外的一点 3)所有三个交点都是不同的,它们都在外三角形内

只要数一下满足条件 (3) 的连击就可以了。您必须测试的连击数为 O(n3),这并不令人望而却步。

EDIT1:重读您的问题,我觉得您可能更感兴趣的是对组合学解决方案/公式的解释,而不是蛮力方法的概述。如果是这种情况,请说出来,我将删除此答案。但我还要说,这种情况下的问题不适合这个网站。

EDIT2:另见a combinatorics solution by Bill Daly and others。它在数学上比另一个更温和。

【讨论】:

    【解决方案2】:

    我还没有为project euler 解决这个问题,我正在讨论你提供的问题和解决方案。在单一功能的情况下,所提出的方法最终是简单的模式发现。求解器根据交叉点出现的三角形类型将提出的问题分为三个部分。这是解决此类问题的一种相当标准的方法,将较大的模式分解为较小的模式以使解决更容易。用于表达各种形式的三角形的函数我只能假设是由非常敏锐的模式发现思维或一些数论/几何生成的。这也超出了这个解释和我的知识范围。这个问题与编程无关。它基本上完全是数学。如果您阅读您喜欢的网站,您可以看到解决问题的逻辑。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多