📄 1336 word index.cpp
字号:
#include <cstdio>
#include <string>
using namespace std;
char code[6];
char match[83682][6];
int mindex[5];
int make()
{
int i,j,l,k,h,n,len;
bool inc;
memset(match,0,sizeof(match));
n=1;
for(i=1;i<=26;i++,n++)
match[n][0]='a'+i-1;
mindex[0]=n;
for(i=1;i<=26;i++)
for(j=i+1;j<=26;j++,n++)
match[n][1]='a'+j-1 , match[n][0]='a'+i-1;
mindex[1]=n;
for(i=1;i<=26;i++)
for(j=i+1;j<=26;j++)
for(k=j+1;k<=26;k++,n++)
match[n][2]='a'+k-1 , match[n][1]='a'+j-1 , match[n][0]='a'+i-1;
mindex[2]=n;
for(i=1;i<=26;i++)
for(j=i+1;j<=26;j++)
for(k=j+1;k<=26;k++)
for(l=k+1;l<=26;l++,n++)
match[n][3]='a'+l-1 , match[n][2]='a'+k-1 , match[n][1]='a'+j-1 , match[n][0]='a'+i-1;
mindex[3]=n;
for(i=1;i<=26;i++)
for(j=i+1;j<=26;j++)
for(k=j+1;k<=26;k++)
for(l=k+1;l<=26;l++)
for(h=l+1;h<=26;h++,n++)
match[n][4]='a'+h-1 , match[n][3]='a'+l-1 , match[n][2]='a'+k-1 , match[n][1]='a'+j-1 , match[n][0]='a'+i-1;
mindex[4]=n;
return n-1;
}
int main()
{
int i,j,n,index,len;
bool fail;
len=make();
while( scanf("%s",code)!=EOF )
{
fail=false;
for(i=0; code[i+1] ; i++)
if(code[i+1] <= code[i])
{ fail=true; break;}
len=i;
if(fail)
index=0;
else
{
if(len==0)
i=1;
else
i=mindex[len-1];
for( ;i<mindex[len];i++)
if(strcmp(match[i],code)==0)
{ index=i;break;}
}
printf("%d\n",index);
}
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -