问题 1815: [蓝桥杯][2014年第五届真题]排列序数

问题 1815: [蓝桥杯][2014年第五届真题]排列序数

时间限制: 1Sec 内存限制: 128MB 提交: 208 解决: 100

题目描述

   如果用a b c d这4个字母组成一个串,有4!=24种,如果把它们排个序,每个串都对应一个序号:
  abcd  0
  abdc  1
  acbd  2
  acdb  3
  adbc  4
  adcb  5
  bacd  6
  badc  7
  bcad  8
  bcda  9
  bdac  10
  bdca  11
  cabd  12
  cadb  13
  cbad  14
  cbda  15
  cdab  16
  cdba  17
  ...

    现在有不多于10个两两不同的小写字母,给出它们组成的串,你能求出该串在所有排列中的序号吗?

输入

一行,一个串。

输出

一行,一个整数,表示该串在其字母所有排列生成的串中的序号。注意:最小的序号是0。

样例输入

bdca

样例输出

11
#include<iostream>
#include<algorithm>
using namespace std;
int main(void){
	string t,s;
	cin>>t;
	s = t;
	sort( s.begin(),s.end());
	int cnt = 0;
	do{
	   if( t == s ){ 
	       cout<<cnt<<endl;
	       break;
	   }
	   cnt++;
	}while( next_permutation(s.begin() ,s.end()));
	return 0;
} 
发布了761 篇原创文章 · 获赞 134 · 访问量 9万+

猜你喜欢

转载自blog.csdn.net/S_999999/article/details/104099591
今日推荐