Tuesday, April 26, 2011

417 - Word Index


#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;

char word[10];
int Index;
char Table[84000][6];
bool isValid();
void init();
   
int main()
{
    int i;
    //freopen("in.txt","r",stdin);

    init();
    while (gets(word))
    {
        if (isValid())
        {
            for (i=0;i<Index;i++)
                if(!strcmp(word,Table[i]))
                {
                    printf("%d\n",i+1);
                    break;
                }   
        }   
        else
            printf("0\n");
    }   
return 0;
}

void init()
{
    memset(Table,'\0',sizeof(Table));
    int i,j,k,m,n;
    Index=0;
    for ( i=0;i<26;i++ )
    {
        Table[Index][0] = i+97;
        Index++;
    }   
    for ( i=0;i<25;i++ )
        for ( j=i+1;j<26;j++ )
        {
            Table[Index][0] = i+97;
            Table[Index][1] = j+97;
            Index++;
        }   
    for ( i=0;i<24;i++ )
        for ( j=i+1;j<25;j++ )
            for ( k=j+1;k<26;k++ )
            {
                Table[Index][0] = i+97;
                Table[Index][1] = j+97;
                Table[Index][2] = k+97;
                Index++;
            }   
    for ( i=0;i<23;i++ )
        for ( j=i+1;j<24;j++ )
            for ( k=j+1;k<25;k++ )
                for ( m=k+1;m<26;m++ )
                {
                    Table[Index][0] = i+97;
                    Table[Index][1] = j+97;
                    Table[Index][2] = k+97;
                    Table[Index][3] = m+97;
                    Index++;
                }   
    for ( i=0;i<22;i++ )
        for ( j=i+1;j<23;j++ )
            for ( k=j+1;k<24;k++ )
                for ( m=k+1;m<25;m++ )
                    for ( n=m+1;n<26;n++ )
                    {
                        Table[Index][0] = i+97;
                        Table[Index][1] = j+97;
                        Table[Index][2] = k+97;
                        Table[Index][3] = m+97;
                        Table[Index][4] = n+97;
                        Index++;
                    }   
}

bool isValid()
{
    int i;
    for ( i=0;i<strlen(word)-1;i++ )
        if ( word[i] >= word[i+1] ) return false;
    return true;
}   

No comments:

Post a Comment

Note: Only a member of this blog may post a comment.