【发布时间】:2019-05-26 02:31:11
【问题描述】:
我一直在网上查看并询问朋友,因为我对编码非常陌生。我发现所有这些帖子都是关于在 n 个字母上写下所有可能的排列。我不是在找那个。
我想要实现的是给定一个整数数组,我想将其转换为如下排列。假设 X 是一个整数数组;
X= { 3, 4, 1, 2, 5}
现在熟悉置换群(或对称群)的人会知道,任何置换都有循环符号。我想将 X 视为一些分配值的函数,如下所示;
1 --> 3
2 --> 4
3 --> 1
4 --> 2
5 --> 5
在某种程度上,如果上述函数是置换 sigma,那么我们有 sigma(1)= X 中的第 1 个条目,sigma(2)= X 中的第 2 个条目,依此类推。
最后,我需要计算这个排列中有多少个循环,或者一个循环符号中的循环数。同样对于上面的例子,我们有
1 --> 3 --> 1(所以这是一个循环)
2 --> 4 --> 2(另一个循环)
5 --> 5(这也是一个循环)
所以它也应该告诉我在这种情况下 X 有 3 个循环。
这可能是一个详细的问题,但任何一点点的帮助都非常感谢。非常感谢大家!
【问题讨论】:
-
array of integers,不是string of numbers -
我改了标题,希望现在更合适。感谢您的快速回复,因为我是一个完整的新手,您推荐给我的帖子谈论的是 Python 代码。我想在 C 中执行此操作,您认为类似的方法也适用于 C 吗?
标签: c arrays algorithm function permutation