poj 1850 Code 1496 Word Index

这个题是组合题:

View Code
#include<iostream>

#include<cstdio>

#include<cstdlib>

#include<algorithm>

#include<cmath>

#include<queue>

#include<set>

#include<map>

#include<cstring>

#include<vector>

#include<string>

#define LL long long

using namespace std;

void Init( int c[][27] )

{

     for( int i = 0 ; i < 27; i ++ )

         for( int j = 0 ;  j <= i ; j ++ )

         {

            if( j == 0 || i == j ) c[i][j] = 1;

            else c[i][j] = c[i-1][j-1] + c[i-1][j];

         }

     c[0][0] = 0;    

}

int main(  )

{

    int c[27][27];

    char str[12];

    Init( c );

    while( scanf( "%s",str )==1 )

    {

         int len = strlen( str ),flag = 0;

         for( int i = 1; i < len ; i ++ )

         {

             if( str[i] < str[i-1] )

             {

                 flag = 1;

                 puts( "0" ); return 0;

             }

         }    

         int sum = 0;

         for( int i = 1 ; i < len ; i ++ )

              sum += c[26][i];

         for( int i = 0 ; i < len ; i++ )

         {

              char s = i==0?'a':str[i-1] + 1;

              while( s < str[i] )

              {

                  sum += c['z'-s][len-i-1];

                  s++;    

              }

         }

         printf( "%d\n",++sum );

    }

    //system( "pause" );

    return 0;

}

 

你可能感兴趣的:(index)