zoj 3171 - The Hidden 7's

来源:互联网 发布:禁止软件联网 编辑:程序博客网 时间:2024/06/04 21:16

题目:给你一个字符串,统计其中能找到多少个构成seven的子序列。

分析:dp。按单词的字母顺序DP,每个字母统计他前面字串的个数。

说明:(2011-09-19 14:03)

#include <stdio.h>#include <stdlib.h>#include <string.h>#define DataSize 10005char         str[ DataSize ];char          data[] = "0seven";long long seven[ 6 ][ DataSize ];int main(){    while ( scanf("%s",str) != EOF ) {        int len = strlen( str );        for ( int i = 0 ; i < len ; ++ i )            if ( str[ i ] >= 'A' && str[ i ] <= 'Z' )                str[ i ] = str[ i ] - 'A' + 'a';                memset( seven, 0, sizeof( seven ) );        for ( int i = 0 ; i < len ; ++ i )            seven[ 0 ][ i ] = 1;        seven[ 1 ][ 0 ] = (str[ 0 ]=='s');                    for ( int k = 1 ; k <= 5 ; ++ k )        for ( int i = 1 ; i < len ; ++ i )            if ( str[ i ] == data[ k ] )                seven[ k ][ i ] = seven[ k ][ i-1 ] + seven[ k-1 ][ i-1 ];            else                seven[ k ][ i ] = seven[ k ][ i-1 ];        printf("%lld\n",seven[ 5 ][ len-1 ]);    }    return 0;}

0 0
原创粉丝点击