我排第几个
来源:互联网 发布:沈阳思迅软件 编辑:程序博客网 时间:2024/04/27 20:29
我排第几个
时间限制:1000 ms | 内存限制:65535 KB
难度:3
- 描述
现在有"abcdefghijkl”12个字符,将其所有的排列中按字典序排列,给出任意一种排列,说出这个排列在所有的排列中是第几小的?
- 输入
- 第一行有一个整数n(0<n<=10000);
随后有n行,每行是一个排列; - 输出
- 输出一个整数m,占一行,m表示排列是第几位;
- 样例输入
3abcdefghijklhgebkflacdjigfkedhjblcia
- 样例输出
1302715242260726926
- 来源
- [苗栋栋]原创
- 上传者
苗栋栋
思路:之前是用next_permutation做的,超时了。然后看见讨论组里说是康托展开。。之前没看懂,刚才看了一个博客里的链接,说的很好。。
http://zh.wikipedia.org/zh/康托展开
my code:
#include<iostream>#include<string.h>using namespace std;int jiecheng(int n){int i;int ji=1;for(i=1;i<=n;i++) ji=ji*i;return ji;}int main(){int T,i,j,len,count,sum;char a[13];cin>>T;while(T--){sum=1; cin>>a; len=strlen(a); for(i=0;i<len;i++) { count=0; for(j=i+1;j<len;j++) { if(a[i]>a[j]) { count++; } } sum=sum+count*jiecheng(len-i-1); } cout<<sum<<endl;}return 0;}
0 0
- 我排第几个?
- 我排第几个
- 我排第几个
- 我排第几个
- 我排第几个
- 我排第几个
- 我排第几个
- 我排第几个
- 我排第几个
- 我排第几个
- 我排第几个
- 我排第几个
- 我排第几个
- NYOJ - 我排第几个
- 139 我排第几个
- acm-我排第几个
- NYOJ_139我排第几个
- 139 我排第几个
- android开发基础知识:OpenGL纹理本质
- 2-6
- Android开发:Fragment不同操作的生命周期
- P52第25题
- packages的install and uninstall
- 我排第几个
- oracle sql 之视图,序列,索引,同义词
- 效率&性能优化
- 苹果系统声音文件
- 关于javaweb项目导入eclipse后变成普通java项目的解决办法
- 火狐谷歌插件开发过程
- 以年、月為條件,統計該月有多少天
- 百度mp3接口(baidu mp3 api)
- c++ stl容器