algorithm - 从 "int"映射到相应的排列值?

标签 algorithm permutation

我遇到了这个 question今天早上。

基本上,这个问题是关于必须为 6 个值创建排列的数据;每一个从 1 到 38。

所以,第一个排列是

1 1 1 1 1 1      [ permutation 1 ]
1 1 1 1 1 2      [ permutation 2 ]
1 1 1 1 1 3...   [ permutation 3 ]

稍后结束

38 38 38 38 38 38 [ permutation 38^^6 ]

输出是由 6 个嵌套循环简单创建的,每个循环从 1 到 38;在最内层的循环中,打印 6 个循环计数器。

现在我想知道这背后的数学原理;出于好奇:

的“功能”是什么?
  1. 计算“排列指数”,给定任何排列 1 2 3 4 5 6
  2. 可能更有趣:需要一个“索引”,例如 102382;并告诉我相应的排列输出

有人知道吗?

最佳答案

它的工作原理与改 rebase 数(二进制、八进制或十六进制)完全一样。 第一个问题很简单: 1*38^6 + 2*38^5 + 3*38^4 + 4*38^3 +...+6*38^0 第二个反转: 102382 mod 38...递归 更新 让我们假设我们想要将 10 更改为基数 2:

10/2=5 remainder(modulus)  **0** 
5/2=2 remainder           **1**
2/2=1 remainder           **0**
1/2=0 remainder           **1**

向后是1010 general 给了一个 M 来改 rebase 数 B,只需将 M 除以 B ,余数将成为新基数中的数字

关于algorithm - 从 "int"映射到相应的排列值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39387063/

相关文章:

performance - 洗牌时跟踪项目的最佳方式,以及洗牌前它们所在的位置

algorithm - 什么是 NP 和 NP 完全问题?

c++ - 如何有效地找到数字流中元素的排名?

c - 我无法完美地完成这个循环

algorithm - 不使用列表排列二叉树

python - Python中具有一些固定元素的排列方法

Python:从具有字符限制的列表中生成所有可能的序列组合

algorithm - 来自两个输入的伪随机数生成器

c++ - 我无法理解使用 C/C++ 的 codility PermMissingElem 错误

c# - 具有 n 个列表的笛卡尔积