排列序号

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了排列序号相关的知识,希望对你有一定的参考价值。

代码(C++)

class Solution {
public:
/**
* @param A an integer array
* @return a long integer
*/
// 计算阶乘的函数
long long fac(int a) {
long long res = 1;
while (a != 1)
res *= a--;
return res;
}

long long permutationIndex(vector<int>& A) {
// Write your code here
if (A.empty()) return 0;
if (A.size() == 1) return 1;

long long res = 1;
vector<int> B(A);

sort(B.begin(), B.end());
// 记录位数
int dig = A.size()-1;

int j = 0;

for (int i = 0; i < A.size()-1; ++i) {
// 找出A中每一位数字在B中的位置
while (A[i] != B[j])
j++;
res += j*fac(dig--);
B.erase(B.begin()+j);
j = 0;
}
return res;
}
};

技术分享





























以上是关于排列序号的主要内容,如果未能解决你的问题,请参考以下文章

如何自动排列序号?

mysql mysql 获取排列序号

排列序号

排列序号

排列序号

浅谈康托展开和其逆运算