https://blog.csdn.net/lttree/article/details/24798653
网上有答案是用了STL做的,这个是用 的康拓函数,用的是数学知识。
很经典的就是逆康拓函数里面根据某一位数的数怎样由 bi小的比它的个数 来推算出来(用了一个vst数组)。
#include <iostream>
using namespace std;
const int maxn=1001;
int fac[] = {1,1,2,6,24,120,720,5040,40320};
int kangtuo(int n,char a[])
{
int i,j,t;
int sum=0;
for(int i=0;i<n;i++)
{
t=0;
for(j=i+1;j<n;j++)
{
if(a[i]>a[j])
t++;
}
sum+=t*fac[n-i-1];
}
return sum+1;
}
int main()
{
int n;
char a[1001];
cin >> n;
cin &