[ZOJ 1387] [POJ 1432] Decoding Morse Sequences

在WPS/Office中免费使用AI,快速提升办公效率!​ 《免费解锁WPS/Office AI办公神器教程》摘要: 本教程详解如何通过第三方插件OfficeAI免费实现WPS/Office智能办公,突破官方付费限制。从安全设置到安装配置,手把手教学,涵盖文档生成、PPT美化、Excel图表等核心功能。关键优势包括零成本、全场景支持及云端/本地双模式切换,并附常见问题解决方案。注意需使用WPS 2024+版本,安装时需临时关闭杀毒软件。教程强调工具来源合法性,建议商用购买正版授权。(149字) 阅读详情

ZOJ: http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1387

POJ: http://poj.org/problem?id=1432


题目大意:

给出一个字母的译码表,给出一个有n个单词的字典,给出一串编码。问再给出字典中有多少种不同的解码方式。


题目分析:

首先编码只有-和.,可以很方便地建立一棵Trie树,还是最熟悉的二叉方式。

typedef struct trie
{
    int count;                  //单词数 
    struct trie *dot, *dash;    
}trie;

之后将每一个读入的单词插到Trie树上。

 用动态规划处理 Morse sequence, 下面记为str。

记f[i]为第i个字符到strlen(str)-1的不同解码数,f[i]=sum(f[i+j]*count[k], 表示从i开始的j位可以解码为一个单词,且相同编码的单词有count[k]个),具体的count和单词的匹配用之前建立的Trie树完成。


源代码:

Trie树的写法根据看到的一个感觉不错的版本修改过。

#include <cstdio>
#include <cstdlib>
#include <cstring>
#define maxn 10010
#define maxlen 20010

const char* morse[26] = {
".-",   "-...", "-.-.", "-..",
".",    "..-.", "--.",  "....",
"..",   ".---", "-.-",  ".-..",
"--",   "-.",   "---",  ".--.",
"--.-", ".-.",  "...",  "-",
"..-",  "...-", ".--",  "-..-",
"-.--", "--.."
};			

typedef struct trie
{
    int count;                  //单词数 
    struct trie *dot, *dash;    
}trie;

trie *trie_new()
{
    trie *t = (trie *)malloc(sizeof(trie));
    t->dot = t->dash = NULL;
    t->count = 0;
    return t;
}

void trie_add(trie *root, const char code[])
{
    int p=0, len=strlen(code);
    trie *node=root;
    while (p<len)
    {
        if (code[p]=='.')
        {
            if (!node->dot)
                node->dot = trie_new();
            node = node->dot;
        }
        else
        {
            if (!node->dash)
                node->dash = trie_new();
            node = node->dash;
        }
        p++;
    }
    node->count++;
}

void trie_free(trie *p)
{
    if (p)
    {
        trie_free(p->dot);
        trie_free(p->dash);
        free(p);
    }
}

void getmorse(const char word[], char code[])
{
    int j=0;
    for (int i=0; i<strlen(word); i++)
    {
        int mlen=strlen(morse[word[i]-'A']); 
        for (int k=0; k<mlen; k++, j++)
            code[j]=morse[word[i]-'A'][k];
    }
    code[j]='\0';
}

void init(char str[], trie *root)
{
    int n;
    char word[maxlen], code[maxlen];
    scanf("%s", str);
    scanf("%d", &n);
    for (int i=0; i<n; i++)
    {
        scanf("%s", word);
        getmorse(word, code);
        trie_add(root, code);
    }
}

int dp(const char str[], trie *root)
{
    int f[maxn];
    int slen=strlen(str);
    f[slen]=1;
    for (int i=slen-1; i>=0; i--)
    {
        f[i]=0;
        trie *p=root;
        for (int j=i; j<slen; j++)
        {
            if (str[j]=='.')
            {
                if (p->dot==NULL) break;
                p=p->dot;
            }
            else
            {
                if (p->dash==NULL) break;
                p=p->dash;
            }
            if (p->count!=0) f[i] += (p->count)*f[j+1];
        }
    }
    return f[0];
}

int main()
{
    char str[maxlen];
    int cs, ans;
    trie *root;
    scanf("%d", &cs);
    while (cs--)
    {
        trie_free(root);
        root = trie_new();
        init(str, root);
        ans = dp(str, root);
        printf("%d\n", ans);
    }
    return 0;
}


题目分析:
题目分析:
题目分析:
题目分析:
WPS文档中心和文档中台 operate 未授权访问漏洞(CVE-2025-0717) WPS文档中心和文档中台的/open/v6/api/etcd/operate?key=/config/storage&method=get接口存在未授权访问漏洞,攻击者可通过该漏洞获取AK/SK密钥等信息,这些密钥通常用于系统内部认证和权限控制,泄露后可能导致攻击者进一步修改K8s配置、部署恶意容器或执行远程命令,最终实现对系统的完全控制。 阅读详情

相关推荐

RealSense D455启动教程

RealSense D455启动教程 修改rs_camera.launch

每天进步一点点 2417

POJ 1432 Decoding Morse Sequences (DP)

Decoding Morse Sequences 题目链接: http://acm.hust.edu.cn/vjudge/contest/129783#problem/D Description Before the digital age, the most common "binary" code for radio communication was the Morse cod...

dituonian8372的博客 241

ubuntu24.04+RTX5090D 显卡驱动安装

本文详细介绍了在Ubuntu系统中更新内核、安装NVIDIA驱动的步骤。首先,通过mainline工具安装新版内核,并确保GCC版本兼容。接着,在无桌面环境下配置TTY模式,解决中文显示问题。然后,禁用默认的nouveau驱动,安装NVIDIA驱动,并选择开源驱动以避免黑屏问题。最后,重新启用图形界面,并通过测试软件验证显卡功能。整个过程涵盖了内核更新、驱动安装、TTY配置及图形界面恢复等多个关键步骤,适合需要手动配置NVIDIA驱动的用户参考。

妖米的博客 4672

poj 1432 Decoding Morse Sequences

题目链接:http://poj.org/problem?id=1432 题目大意及思路:计算一段文摩斯码可能的译文种数,定义dp[i]为前i个摩斯码的种数,然后枚举最后一个单词的摩斯码长度,将所有可能加起来;要注意的是有些单词的摩斯码相同。 #include&lt;stdio.h&gt; #include&lt;stdlib.h&gt; #include&lt;string.h&gt; #in...

java开发指南博客 【转载】 220

Tribon Vitesse开发教程(一)

Tribon Vitesse简介 Tribon Vitesse是Tribon提供给Python编程语言的编程接口,它是一系列的API。使用Python的语法调用这些API,结合Python语言自身的语法生成的程序叫做Vitesse程序。Vitesse是法语“速度”的意思,读作“为戴斯”。使用Tribon Vitesse可以直接访问Tribon产品信息模型和使用Tribon应用程序的功能,以控制设计

forevermemory的专栏 2588

BART non-Cartesian 重建:并行成像 压缩感知

本文主要使用并行成像和压缩感知方法实现non-Cartesian MRI 数据的重建。

张哥频道:电生理信号和磁共振成像 1181

POJ1118 HDU1432 Lining Up【水题】

Lining UpTime Limit: 2000MS Memory Limit: 32768KTotal Submissions: 26016 Accepted: 8153Description"How am I ever going to solve this problem?" said the pilot.Indeed, the pilot was not facing an easy t...

海岛Blog 1710

搞定ESD(五):静电放电问题分析与调试

前面深入分析了静电放电的干扰机理、耦合路径,从现在开始将进入下一个大家非常关注的环节:静电放电问题分析与调试,掌握静电放电问题的分析方法,快速锁定敏感设备或者耦合路径,可以达到事半功倍的效果。

记得诚 2793

1432 Decoding Morse Sequences

Decoding Morse Sequences Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 418  

xcl119xcl的专栏 907

【教程4>第8章>第10节】OFDM完整通信链路项目的FPGA开发4——插入导频

本文介绍了基于MATLAB和Verilog的导频插入设计与实现方法。首先回顾了MATLAB中导频插入的算法实现,展示了每32个数据插入一个导频的设计。接着详细说明了Verilog硬件实现方案,包括导频序列定义、计数器设计、FIFO模块等关键部分。通过仿真测试验证了设计的正确性,输出了插入导频后的序列、导频序列以及调整时序后的序列。最后提供了相关视频教程资源,帮助读者理解设计过程。该设计实现了数据与导频的精确插入,为OFDM等通信系统开发提供了实用参考。

FPGA/MATLAB学习教程/源码/项目合作开发 395

利用baostock获取上市公司财务指标

利用baostock获取上市公司的财务指标 1、导入模块,登录baostock import baostock as bs import pandas as pd import time # 登陆系统 lg = bs.login() # 显示登陆返回信息 print('login respond error_code:'+lg.error_code) print('login respond error_msg:'+lg.error_msg) 2、查询股票代码、行业板块 # 查询股票代码 rs=.

firefox_yau的博客 2098

HDU 1523 Decoding Morse Sequences(DP)

题目链接:点击打开链接 题意:给出一个编码, 给n个单词的字典, 求有多少个字典中单词组成的语句可以编译成所给编码。 思路:答案数很大, 我们不难想到要用动态规划的思想。   用d[i]表示到第i个编码为止的答案数, 那么起点就是d[0] = 1;  我们在第二层循环枚举n个单词的编码, 如果能匹配,就转移过去。 细节参见代码: #include #include #include #in

AC_Arthur的专栏 1339

面试官连夜整理:103道AI Agent面试题,答对一半直接加薪50%

维度AutoGPTLangGraphAutoGen控制流LLM 驱动的隐式循环代码层定义的显式状态图对话驱动的自动流转状态存储Prompt 上下文中(易丢失)结构化 State 对象(可持久化)对话历史(自动累积)分支能力依赖 LLM 的文本输出(不稳定)条件边 + 节点路由(确定性)多 Agent 对话自然分支(涌现式)回溯/回滚无原生支持,只能重新开始原生 Checkpoint 支持时间旅行无全局回滚,单 Agent 可重启人机协同仅人工在关键点介入(需要自定义)原生支持。

weixin_35774598的博客 620

zoj 1387 译题+题解

Decoding Morse Sequences在数字时代以前,无线电通讯最常用的二进制码是摩斯码。在摩斯码中,符号被译成一串短或长的脉冲(有.或-组成)。题目表中的表给出的就是大写字母对应的脉冲。我们注意到在缺乏停顿的情况下,一种摩斯密码可能有多种解释。例如, -.-..-- 可以翻译成CAT或NXT。一个摩斯密码操作员将联系上下文信息(如一本字典)来决定密码的意思。即使有字典,也可能存在多种解

Never Give Up、 715

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

POJ 1387 Team Queue

Problem Description Queues and Priority Queues are data structures which are known to most computer scientists. The Team Queue, however, is not so well known, though it occurs often in everyday life. At lunch time the queue in front of the Mensa is a team

蒟蒻本蒻的博客 291

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

POJ-1432(n!的位数-数论)

问题描述:输入一个整数n(1,10^7),要你输出该整数的阶乘后的位数是多少? 问题分析:由于n的输入数可能较大,倘若按照常规算法(就是算出n的阶乘)设计的话,一方面会出现TLE,另一方面会出现数据溢出的情况。所以我们不得不充分利用数学知识里面的对数与指数间的亲密关系。 推导以下公式:n!=n*(n-1)*(n-2)*…..*1  n的位数=[lg(n)]+1; 所以:n!的位数=[lg(

famousDT的专栏 773

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

POJ 1432 Decoding Morse Sequences

题意给出一个字母的译码表,给出一个有n个单词的字典,给出一串编码。问再给出字典中有多少种不同的解码方式。分析首先编码只有-和.,可以很方便地建立一棵Trie树,还是最熟悉的二叉方式。 然后令opt[i]表示区间[i..len]的方案数 则有opt[i]=sigma{[i..j]组成的单词的个数*opt[j+1]|i<=j代码#include<iostream> #in

Clear Dreamer 823

CDOJ—1387简单的双向搜索

CDOJ1387

Venishel的博客 733

hdoj 1432 && poj 2606 Lining Up (多点共线)

Lining Up Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 1326    Accepted Submission(s): 376 Problem Description ``How am I ever g

R 459

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 ".-", "-...", "-.-.", "-...

aegt43853的博客 143

九度Online Judge 题目1432:叠筐 解答

九度Online Judge 题目1432:叠筐 解答 提交网址: http://ac.jobdu.com/problem.php?pid=1432 内存限制:128 兆       时间限制:1 秒 题目描述: 把一个个大小差一圈的筐叠上去,使得从上往下看时,边筐花色交错。这个工作现在要让计算机来完成,得看你的了。 输入: 输入是一个个的三元组,分

极客学长Bravo | 突破信息差 | 副业生财有术 1897

POJ 1387 线段树

#include #include using namespace std; const int maxn = 100000; struct Event { int x, y1, y2; int add; }; struct IntervalTreeNode { int count, total; }; int n; struct Rectangle { int x1, y1, x2,

Tczxw的专栏 630

Cpp环境【Usaco2007 Jan】【CQYZOJ1432】解题

【问题描述】   过去的日子里,农夫John的牛没有任何题目。可是现在他们有题目,有很多的题目。 精确地说,他们有 P 道题目要做。并且他们还离开了农场并且象普通人一样找到了工作,他们的月薪是M 元(上个月的工资在下月初发放)。      他们的题目是一流的难题,所以他们得找帮手。帮手们不是免费的,但是他们能保证在一个月内作出任何题目。每做一道题需要两笔付款:第一笔A_i(1 <= A_i

天地皆逆旅,你我本行人。 941

POJ1118,Lining Up,暴力过的,hash什么的只能仰慕

Lining Up Description "How am I ever going to solve this problem?" said the pilot.  Indeed, the pilot was not facing an easy task. She had to drop packages at specific points scattered in a dange

/ 681

ACM学习计划

看完人家的博客,发现任重道远。。。 一位高手对我的建议: 一般要做到50行以内的程序不用调试、100行以内的二分钟内调试成功.acm主要是考算法的 ,主要时间是花在思考算法上,不是花在写程序与debug上。  下面给个计划你练练: 第一阶段: 练经典常用算法,下面的每个算法给我打上十到二十遍,同时自己精简代码, 因为太常用,所以要练到写时不用想,10-15分钟内打完,甚至关掉显示器都

DM & ML 7397

贪心算法 HDU 1523 Decoding Morse Sequences

贪心算法,字符串处理。

DT_Zhangshuo的博客 914
上一篇: [ZOJ 1298][POJ 1135] Domino Effect
下一篇: [ ZOJ 1043 ][ POJ 1108 ] Split Windows
program_shun
博客等级 码龄17年 10粉丝 43原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值