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

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!,
数组与数值是一一对应关系即可。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。