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;
}

 

posted @ 2012-08-06 16:50  wutaoKeen  阅读(126)  评论(0)    收藏  举报