#include <stdio.h>
#include <algorithm>
/*借鉴网上实现代码*/
typedef long long int doubleLong;
int f(int number) {
if ( number == 1)
return 1;
return number*f(number - 1);
}
int main(){
doubleLong length, i, j;
doubleLong data[10000];
doubleLong sum = 0;
while(scanf("%I64d", &length)) {
for (i = 0; i < length; i++) {
scanf("%I64d", &data[i]);
}
for (i = 0; i < length - 1; i++) {
doubleLong count = 0;
for (j = i+1; j < length; j++) {
if (data[j] < data[i])
count++;
}
sum += ( count * f(length-i-1) );
}
printf("%I64d\n", sum);
if (next_permutation(data, data+length)) {
for(int i = 0; i < length; i++) {
printf("%I64d", data[i]);
}
printf("\n");
}
}
return 0;
}
排列的字典序问题
最新推荐文章于 2022-10-24 20:08:35 发布