相关疑难解决方法(0)

在字典顺序中查找排列列表中给定排列的索引

可能重复:
给定字符串和字符串的排列.在字符串排列的排序列表中查找此置换字符串的索引.

这是一个面试问题.让按字典顺序列出排列.例如123,132,213,231,312,321.给定排列在这样的列表中找到它的索引.例如,置换索引213是2(如果我们从0开始).

平凡地说,我们可以使用next_permutation算法以字典顺序生成下一个排列,但它导致O(N!)解,这显然是不可行的.有没有更好的解决方案?

algorithm math permutation combinatorics

5
推荐指数
1
解决办法
4695
查看次数

哈希有序排列的最佳方法[1,9]

我正在尝试实现一种方法来保持8个谜题的访问状态不再生成.
我最初的方法是将每个访问过的模式保存在列表中,并在每次算法想要生成子项时进行线性检查.
现在我希望O(1)通过列表访问及时完成此操作.8拼图中的每个模式是1到9之间的数字的有序排列(9是空白块),例如125346987是:

1 2 5
3 4 6
_ 8 7

这种可能排列的数量大约为363,000(9!).将这些数字散列到该大小列表的索引的最佳方法是什么?

python algorithm hash permutation sliding-tile-puzzle

3
推荐指数
1
解决办法
989
查看次数