上海市黄浦区延安东路45号16楼 13833677592 jiuyouhui@j9.fo

企业文化

六个不同图标的排列怎样变成可还原的编号:独立演算第04例

2026-11-08

关卡中六个不同图标有许多排列。若想给每种排列一个连续且可还原的编号,可以按字母顺序比较排列,并记录每一步跳过了多少个较小的可用图标。

图标为A至F,每个恰好出现一次,编号从零开始。第一个位置的贡献是它在剩余有序图标中的下标乘五的阶乘,后续依次乘四、三、二、一、零的阶乘;把所有贡献相加。

这一例的完整输入

八个独立编号为[535, 690, 218, 374, 717, 327, 493, 246];A小于B,依此到F。

逐项计算记录

编号 | 还原排列 | 六个剩余列表下标 | 六项贡献 535 | ECBAFD | [4, 2, 1, 0, 1, 0] | [480, 48, 6, 0, 1, 0] 690 | FDEABC | [5, 3, 3, 0, 0, 0] | [600, 72, 18, 0, 0, 0] 218 | BFADCE | [1, 4, 0, 1, 0, 0] | [120, 96, 0, 2, 0, 0] 374 | DAECBF | [3, 0, 2, 1, 0, 0] | [360, 0, 12, 2, 0, 0] 717 | FEDBCA | [5, 4, 3, 1, 1, 0] | [600, 96, 18, 2, 1, 0] 327 | CEDBFA | [2, 3, 2, 1, 1, 0] | [240, 72, 12, 2, 1, 0] 493 | EADBFC | [4, 0, 2, 0, 1, 0] | [480, 0, 12, 0, 1, 0] 246 | CADBEF | [2, 0, 1, 0, 0, 0] | [240, 0, 6, 0, 0, 0]

读表时先把输入与计算后的结果分开。空值表示这一步没有适用对象或没有可用结果,不应自动换成零。编号只负责识别本例中的元素,同一个数字出现在不同字段时,要先确认它代表位置、对象还是数值。

怎样复核和使用

还原时把编号按相应阶乘依次除出下标,从剩余列表取走该图标,余数继续向后处理。六位排列共有720种,合法编号为零至719,解码后的图标不能重复。

此方法依赖元素全部不同,不能直接拿来给包含重复图标的队列编号。它也是一种确定的排序编号,并不自动生成均匀随机排列;想随机抽取还要单独说明抽样规则。

可以先遮住记录表,只按上述规则重算前两步,再选择一个边界条件重新试算。若结果不一致,应逐项检查输入顺序、端点是否包含以及状态在哪一步更新;不要只看最终合计相同就认为中间处理也完全正确。