把数组转换为数值,数组散列

2019-07-17 16:24发布

一个一维数组,维数长度为n(0<n<=16),其元素由0-(n-1)组成,且每个元素只出现一次,即该数组的例如以下形式:
0,1,2,3,4,5
0,2,3,1,5,4,6
0,3,2,1
3,1,2,4,0

由此可知,对于长度为n的数组,其可能的数组有n!(n的阶乘)种,如:
n=1,数组有1种:0
n=2,数组有2种:0,1;1,0
n=3,数组有6种:0,1,2;0,2,1;1,0,2;1,2,0;2,0,1;2,1,0

现求一种散列算法,将一个长度为n数组转换为一个数值,数值可选U64格式,其转换的范围为0~n!,
数组与数值是一一对应关系即可。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
11条回答
蒙元
1楼-- · 2019-07-18 17:11
 精彩回答 2  元偷偷看……
bamenwhj
2楼-- · 2019-07-18 17:37
说错了,不是魔盒,是魔板。
bamenwhj
3楼-- · 2019-07-18 22:38
这个问题问的不错~~编程常见的算法问题。
LabVIEW2016
4楼-- · 2019-07-19 01:35
蒙元 发表于 2016-1-6 08:56
好麻烦的散列啊,看了下没看懂,楼主解决了吗

解决了,原来这个就是康托展开……
厚黑学者
5楼-- · 2019-07-19 04:54
学习学习                                                                     

一周热门 更多>