康托展开
2018-01-21 20:53
169 查看
/*康托展开 *求出当前排列在n个不同元素的全排列中的名次。比如213在这3个数所有排列中排第4 *序列为321,312,231,213,132,123 *数值从大到小排名 */ #include<bits/stdc++.h> using namespace std; typedef long long LL; LL f[1000+5]; void init()//全排列打表 { f[0]=1; for(LL i=1;i<=25;i++) { f[i]=i*f[i-1]; } } LL contor(char a[]) { LL temp; int len; LL ans=0; len=strlen(a); //cout<<len<<endl; for(int i=0;i<len;i++) { temp=0; for(int j=i+1;j<len;j++) { if(a[i]>a[j])//若改为<则可得到相反的结果 { temp++; } } ans+=temp*f[len-i-1]; //cout<<ans<<endl; } return ans+1; } int main() { init(); char a[100]; while(scanf("%s",a)!=EOF) { cout<<contor(a)<<endl; memset(a,0,sizeof(a)); } return 0; }
相关文章推荐
- 康托展开
- 康托展开
- 全排列的编码与解码——康托展开 (附完整代码)
- nyist 139 我排第几个&&143 第几是谁(康托展开和逆康托展开)
- hdoj 1027 Ignatius and the Princess II 【逆康托展开】
- 【USACO3.2.5】魔板 康托展开/BFS
- POJ1077 HDU1043 Eight 八数码 (A*+康托展开)
- UVALive 6669 (LA 6669) Dragon’s Cruller (康托展开 + 最短路)
- 康托展开入门
- nyoj 139 & 143 康托展开与逆展开
- POJ1077&HDU1043 Eight 八数码第七境界 AStar hash 康托展开 最小堆优化 奇偶剪枝
- 康托展开+bfs-2
- nyoj 139 我排第几个(康托展开)
- leetcode[60]Permutation Sequence 以及 全排列的编码与解码——康托展开 (附完整代码)
- NYOJ ~ 139 ~ 我排第几个(康托展开)
- 康托展开及其逆运算 详解
- 康托展开及其逆运算 详解
- nyoj139我排第几个&nyoj第几是谁?——康托展开及康托逆展开
- 康托逆展开和康托展开的逆运算
- 用于数字康托展开 用于求一个排列的序号或序号对应的排列或对排列的hash