poj 1432 Decoding Morse Sequences

原创 2012年03月28日 15:58:02

题目链接:http://poj.org/problem?id=1432

题目大意及思路:计算一段文摩斯码可能的译文种数,定义dp[i]为前i个摩斯码的种数,然后枚举最后一个单词的摩斯码长度,将所有可能加起来;要注意的是有些单词的摩斯码相同。

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<string>
#include<queue>
#include<algorithm>
#include<vector>
#include<stack>
#include<list>
#include<iostream>
#include<map>
using namespace std;
#define inf 0x3f3f3f3f
#define Max 110
int max(int a,int b)
{
	return a>b?a:b;
}
int min(int a,int b)
{
	return a<b?a:b;
}
string rec;
char s[10100],str[10100];
int dp[10100];
int len;
char cod[26][5]={
            ".-","-...","-.-.","-..",
            ".","..-.","--.","....",
            "..",".---","-.-",".-..",
            "--","-.","---",".--.",
            "--.-",".-.","...","-",
            "..-","...-",".--","-..-",
            "-.--","--.."
            };
map<string ,int>mp;
int main()
{
    int t,n,i,j,k;
    scanf("%d",&t);
   // getchar();
 //   cout<<cod[0];
    while(t--)
    {
        mp.clear();
        memset(dp,0,sizeof(dp));
       scanf("%s",s+1);
       len=strlen(s+1);
   //    printf("len %d\n",len);
       scanf("%d",&n);
       for(i=0;i<n;i++)
       {
            scanf("%s",str);
          //  int len=strlen(str);
            string tmp;
            for(j=0;str[j];j++)
                tmp+=cod[str[j]-'A'];
           // cout<<tmp<<endl;
            mp[tmp]++;
       }
       dp[0]=1;
       for(i=1;i<=len;i++)
            for(j=i-1;j>=i-81&&j>=0;j--)
            {
                if(dp[j]==0)
                    continue;
                char a[100];
                for(k=j+1;k<=i;k++)
                {
                    a[k-j-1]=s[k];
                }
                a[k-j-1]=0;

                  //  cout<<a<<endl;
                    dp[i]+=dp[j]*mp[a];
              //  printf("i %d dp %d\n",i,dp[i]);
            }
        printf("%d\n",dp[len]);
    }
}


 

POJ 1432 Decoding Morse Sequences

题意给出一个字母的译码表,给出一个有n个单词的字典,给出一串编码。问再给出字典中有多少种不同的解码方式。分析首先编码只有-和.,可以很方便地建立一棵Trie树,还是最熟悉的二叉方式。 然...
  • D042412
  • D042412
  • 2015年07月16日 19:21
  • 423

1432 Decoding Morse Sequences

Decoding Morse Sequences Time Limit: 3000MS   Memory Li...
  • xcl119xcl
  • xcl119xcl
  • 2007年10月15日 08:22
  • 551

[ZOJ 1387] [POJ 1432] Decoding Morse Sequences

ZOJ: http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1387POJ: http://poj.org/problem?id...
  • program_shun
  • program_shun
  • 2011年07月03日 09:27
  • 717

1387 Decoding Morse Sequences

Decoding Morse Sequences Time Limit: 10 Seconds      Memory Limit: 32768 KB Before the digital...
  • Puppettt
  • Puppettt
  • 2017年08月09日 15:12
  • 78

HDU 1523 Decoding Morse Sequences

贪心算法,字符串处理。
  • DT_Zhangshuo
  • DT_Zhangshuo
  • 2016年08月06日 15:24
  • 233

HDU 1523 Decoding Morse Sequences(DP)

题目链接:点击打开链接 题意:给出一个编码, 给n个单词的字典, 求有多少个字典中单词组成的语句可以编译成所给编码。 思路:答案数很大, 我们不难想到要用动态规划的思想。   用d[i]表示到第i...
  • weizhuwyzc000
  • weizhuwyzc000
  • 2016年02月19日 12:52
  • 998

POJ-2034-Anti-prime Sequences

题目给出一个闭区间,要求你求出区间内所有数的一个排列,其需要满足任意连续的k个(2 直接DFS飘过~ 代码: #include #include #include using namespace...
  • z309241990
  • z309241990
  • 2013年06月25日 09:20
  • 1044

poj 2034 Anti-prime Sequences

好像距离我上次在csdn上写博客已经很长时间了,
  • u010018629
  • u010018629
  • 2014年04月06日 09:46
  • 445

POJ 2034 Anti-prime Sequences(素数预处理+DFS回溯)

POJ 2034 Anti-prime Sequences(素数预处理+DFS回溯) http://poj.org/problem?id=2034 题意:给你一个n,n+1,n+2,n+3,…m的数字...
  • u013480600
  • u013480600
  • 2014年05月29日 12:27
  • 867

POJ_2034_Anti-prime Sequences(数论+DFS)

Anti-prime Sequences Time Limit: 3000MS   Memory Limit: 30000K Total Submissions: 2620   Accep...
  • u010770930
  • u010770930
  • 2013年08月13日 10:44
  • 452
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:poj 1432 Decoding Morse Sequences
举报原因:
原因补充:

(最多只允许输入30个字)