如何列出二维数组中遍历元素的所有可能组合?

时间:2015-02-21 10:55:53

标签: arrays algorithm traversal

有一个二维数组,其中每个元素都是一个字符。从这个数组中,可以通过从数组的任何元素开始,然后仅沿着邻居(基本方向)遍历而不重复字符来生成字符串。表示此数组的最佳数据结构是什么?从二维数组中的元素生成所有这些可能的字符串的算法是什么?给定的附加约束条件是,两个生成的字符串不应该相同?

例如: 给定的二维数组3x3是:
x y z
x y z
x y z

生成的可能字符串是:(按字母顺序列出)
x xy xyz y yx yz z zy zyx

1 个答案:

答案 0 :(得分:0)

从矩阵构造无向图,其中节点是矩阵元素,如果对应的元素在矩阵中彼此相邻,则在两个节点之间存在边缘。

然后,您必须递归计算路径(类似于DFS,但不跟踪访问的节点)并继续存储在哈希表中遇到的单词。相应地继续更新。