让 S 为一组10位数字。鉴于 S 中的任意两个数字 v 和 w ,我想知道是否存在数字序列 v = u_0 ,u_1,...,u_k = w 这样:
作为一个加号,找到一个算法来找到最短的序列会更好。
理想情况下,我更喜欢C(或伪代码)解决方案,但我真的非常感谢对这一点的所有建议!谢谢!
答案 0 :(得分:3)
从S的元素形成图形:u和v相邻,如果它们在一个坐标中不同。
现在给你,做一个广泛的第一次搜索直到你点击v。
答案 1 :(得分:0)
我会将S
转换为节点对象的图形,其中每个节点对象包含指向相邻节点的链接。 (在某些编程语言中,将'links'作为'指针'读取。)邻接由序列上的条件2定义,因此通过结果图的任何路径都是与这两个条件匹配的序列。
从那里开始,检查图中两个顶点的连通性是一个简单的问题。最简单的解决方案是breadth-first search。 (该特定算法也恰好找到最短路径。)