NOY 139 康托展开
2017-12-16 17:34
239 查看
题目链接
NOY 139我排第几个
现在有”abcdefghijkl”12个字符,将其所有的排列中按字典序排列,给出任意一种排列,说出这个排列在所有的排列中是第几小>的?
输入
第一行有一个整数n(0<n<=10000);
随后有n行,每行是一个排列;
输出
输出一个整数m,占一行,m表示排列是第几位;
样例输入
3
abcdefghijkl
hgebkflacdji
gfkedhjblcia
样例输出
1
302715242
260726926
思路
康托展开模版题代码
#include<iostream> #include<cstdio> using namespace std; int num[13]; void init(){ num[0] = num[1] = 1; for(int i = 2 ; i<= 12; i++) num[i] = num[i-1] * i; } int cantor(char s[]){ int len = 12, ans = 0; for(int i = 0; i < 12; i++){ int temp = 0; for(int j = i+1 ; j< 12; j++) if(s[i]>s[j]) temp++; ans += temp * num[12 - 1 - i]; } return ans + 1; } int main() { //freopen("input.txt","r",stdin); //freopen("output.txt","w",stdout); char s[20]; int t; init(); scanf("%d",&t); while(t--){ scanf("%s",s); printf("%d\n",cantor(s)); } return 0; }
相关文章推荐
- nyoj 139我排第几个(康托展开)
- NYOJ 139 我排第几个(康托展开)
- nyoj 139 我排第几个(康托展开)
- NYOJ 139 我排第几个(康托展开)
- nyoj 139 我排第几个(康托展开)
- nyoj 139 我排第几个(康托展开)
- NYIST 139 我排第几个(康托展开)
- nyoj 139 我排第几个(康托展开)
- nyist 139 我排第几个&&143 第几是谁(康托展开和逆康托展开)
- nyoj 139 我排第几个(康托展开)
- nyoj 139 我排第几个(康托展开)
- nyoj 139 我排第几个(康托展开)
- nyoj__139__143__康托展开和康托逆展开
- nyoj 139 我排第几个(康托展开)
- NYOJ139我排第几个(康托展开)
- nyoj 139 我排第几个(康托展开)
- nyoj 139 我排第几个【数学】【康托展开】
- nyoj 139 我排第几个(康托展开)
- nyoj 139 我排第几个(康托展开)
- nyoj 139 我排第几个(康托展开)