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

How to list all possible combinations of traversing elements in a two dimensional array?

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

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

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

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

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