时间限制: 1Sec 内存限制: 128MB
题目描述
如果用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>
#include<cstring>
using namespace std;
int main()
{
struct pailie{
char array[5];
int n;
};
struct pailie str[30];
char sz[5]={"abcd"};
str[0].n=0;
strcpy(str[0].array,sz);
for(int i=1;i<=23;i++)
{
next_permutation(sz,sz+4);
strcpy(str[i].array,sz);
//puts(str[i].array);
str[i].n=i;
}
char array[5];
gets(array);
for(int i=0;i<24;i++)
{
int xb=1;
xb=strcmp(array,str[i].array);
if(xb==0)
{
cout<<str[i].n<<endl;
break;
}
}
return 0;
}