【问题标题】:An algorithm to find an orthogonal path between two 10 digit numbers一种在两个 10 位数字之间找到正交路径的算法
【发布时间】:2011-03-23 17:37:13
【问题描述】:

S 为一组 10 位数字。给定S中的任意两个数字vw,我想知道是否存在数字序列v=u_0 , u_1, ... , u_k=w 这样:

  1. 每个 u_i 都在 S
  2. 对于每个 i=1,..,k,数字 u_{i-1}u_i 仅在一个位置上不同

另外,最好找到一种算法来找到最短的此类序列。

理想情况下,我更喜欢 C(或伪代码)解决方案,但我真的,真的感谢任何和所有关于这个的建议!谢谢!

【问题讨论】:

  • 如果你们投票结束的人会给我一个提示,说明你们为什么这样做,我将非常感激。谢谢。
  • 目前有 2 票将其关闭为“不是一个真正的问题”,可能是因为它太开放了。这不是编程问题,更像是有人为您提供算法的问题。
  • 我想这是因为没有代码并且是一个高级算法问题。但我不是反对者。我的建议是广度优先搜索,或 A*。
  • 这很愚蠢。仅仅因为人们不理解这些条款,他们就试图关闭它。这似乎是一个寻找最短路径的图问题。
  • 这是什么编程难题?使用数字中的数字对此进行建模有点不自然,标准是使用向量。

标签: c algorithm math graph-theory


【解决方案1】:

由 S 的元素组成一个图:u 和 v 是相邻的,当且仅当它们在一个坐标上不同时。

现在给定你,做一个广度优先搜索,直到你找到 v。

【讨论】:

    【解决方案2】:

    我会将S 转换为节点对象图,其中每个节点对象都包含指向相邻节点的链接。 (在某些编程语言中,将“链接”读作“指针”。)邻接由序列上的条件 2 定义,因此通过结果图的任何路径都是匹配这两个条件的序列。

    从那里开始,检查图形中两个顶点的连通性是一个简单的问题。最简单的解决方案是breadth-first search。 (该特定算法也恰好找到最短路径。)

    【讨论】:

      猜你喜欢
      • 2017-08-10
      • 1970-01-01
      • 1970-01-01
      • 2019-02-20
      • 2013-12-03
      • 2012-02-14
      • 2012-05-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多