zoukankan      html  css  js  c++  java
  • ZOJ 1387 Decoding Morse Sequences

    水动规= =

     1 #include <cstdio>
     2 #include <cstring>
     3 #include <cstdlib>
     4 
     5 const int MAXN = 10010;
     6 const char dic[26][10] =
     7 {
     8     ".-", "-...", "-.-.", "-..",
     9     ".", "..-.", "--.", "....",
    10     "..", ".---", "-.-", ".-..",
    11     "--", "-.", "---", ".--.",
    12     "--.-", ".-.", "...", "-",
    13     "..-", "...-", ".--", "-..-",
    14     "-.--", "--.."
    15 };
    16 
    17 char str[MAXN];
    18 char morse[MAXN][110];
    19 int diclen[26];
    20 int dp[MAXN];
    21 int N;
    22 
    23 void init()
    24 {
    25     for ( int i = 0; i < 26; ++i )
    26         diclen[i] = strlen( dic[i] );
    27     return;
    28 }
    29 
    30 void DP()
    31 {
    32     int len = strlen( &str[1] );
    33     memset( dp, 0, sizeof(dp) );
    34     dp[0] = 1;
    35     for ( int i = 1; i <= len; ++i )
    36         for ( int j = 0; j < N; ++j )
    37         {
    38             bool ok = true;
    39             int k;
    40             //printf( "morse[%d]=%s\n", j, morse[j] );
    41             for ( k = 0; morse[j][k]; ++k )
    42                 if ( str[i + k] != morse[j][k] )
    43                 {
    44                     ok = false;
    45                     break;
    46                 }
    47             if ( ok ) dp[ i + k - 1 ] += dp[i - 1];
    48         }
    49     //for ( int i = 0; i <= len; ++i ) printf( "dp[%d] = %d\n", i, dp[i] );
    50 
    51     printf( "%d\n", dp[len] );
    52     return;
    53 }
    54 
    55 int main()
    56 {
    57     init();
    58 
    59     int T;
    60     scanf( "%d", &T );
    61     while ( T-- )
    62     {
    63         scanf( "%s", &str[1] );
    64         scanf( "%d", &N );
    65         for ( int i = 0; i < N; ++i )
    66         {
    67             char temp[24];
    68             scanf( "%s", temp );
    69             int lenn = 0;
    70             for ( int j = 0; temp[j]; ++j )
    71             {
    72                 strcpy( &morse[i][lenn], dic[ temp[j] - 'A' ] );
    73                 lenn += diclen[ temp[j] - 'A' ];
    74             }
    75             morse[i][lenn] = '\0';
    76             //puts( morse[i] );
    77         }
    78         DP();
    79     }
    80     return 0;
    81 }
  • 相关阅读:
    关于CTeX的几个大坑
    latex与word之间的各种转化方法
    事件的三种绑定方式
    实例操作JSONP原理
    Content Security Policy 入门教程
    video.js
    Javascript面向对象类文章目录
    javaScript的原型继承与多态性
    javaScript的变量
    document.documentElement.clientHeight 与 document.body.clientHeight(杜绝千篇一律的抄袭!!)
  • 原文地址:https://www.cnblogs.com/GBRgbr/p/3086155.html
Copyright © 2011-2022 走看看