我排第几个
时间限制:1000 ms | 内存限制:65535 KB
难度:3
- 描述
-
现在有"abcdefghijkl”12个字符,将其所有的排列中按字典序排列,给出任意一种排列,说出这个排列在所有的排列中是第几小的?
- 输入
- 第一行有一个整数n(0<n<=10000);
随后有n行,每行是一个排列; 输出 - 输出一个整数m,占一行,m表示排列是第几位; 样例输入
-
3 abcdefghijkl hgebkflacdji gfkedhjblcia
样例输出 -
1 302715242 260726926
- 第一行有一个整数n(0<n<=10000);
#include<iostream> #include<stdio.h> #include<algorithm> #include<string.h> using namespace std; int main() { int n ; char a[10005],b[10005]; int len; cin >> n ; for(int i = 0 ; i < n ; i++) { long sum = 0; scanf("%s",a); len = strlen(a); for(int j = 0 ; j < len - 1;j++) { strcpy(b,a); sort(&b[j],b+len); int k = 0; for( ; k + j < len ; k++) if(a[j]==b[k+j]) break; if(k + j < len) sum = (sum+k)*(len-1-j); } cout << sum + 1 << endl; } return 0; }
1765

被折叠的 条评论
为什么被折叠?



