【链接】 我是链接,点我呀:)

【题意】

给你每个字母对应的摩斯密码。
然后每个单词的莫斯密码由其组成字母的莫斯密码连接而成。
现在给你若干个莫斯密码。
请问你每个莫斯密码对应哪个单词。
如果有多个单词和他对应。那么输出字典序最小的那个。
如果没有单词和他对应。
那么,你可以删除或者添加若干字母(只能一直删或一直增加)
问你在这种情况下能匹配到的单词(要求添加或者删的单词的数量最小)
如果有多种可能。输出字典序最小的。

如果一直删除。一直增加也找不到。

那么输出所有单词里面字典序最小的哪个。

【题解】

模拟就好。
先对字典排个序再模拟。

【代码】

#include <bits/stdc++.h>
#define rep1(i,a,b) for (int i = a;i <= b;i++)
#define rep2(i,a,b) for (int i = a;i >= b;i--)
using namespace std; const int N = 1e3; int n;
string s;
string dic[300];
vector<pair<string,string> > v; string _find(string s){
int step = 0;string ans = "";
rep1(i,0,(int)v.size()-1){
if (v[i].second==s) {
if (step==0) ans = v[i].first;
step++;
}
}
if (step>0){
if (step>1) ans+="!";
return ans;
}
step = -1; int len1 = s.size();
rep1(i,0,(int)v.size()-1){
int len2 = v[i].second.size();
if (len2<len1){
string temp = s.substr(0,len2);
if (temp==v[i].second){
if (step==-1){
step = len1-len2;
ans = v[i].first;
}else if (len1-len2<step){
step = len1-len2;
ans = v[i].first;
}
}
}else{
//len2>=len1
string temp = v[i].second.substr(0,len1);
if (temp==s){
if (step==-1){
step = len2-len1;
ans = v[i].first;
}else if (len2-len1<step){
step = len2-len1;
ans = v[i].first;
}
}
}
}
if (step==-1) ans = v[0].first;
ans+="?";
return ans;
} int main(){
//freopen("/home/ccy/rush.txt","r",stdin);
// freopen("/home/ccy/rush_out.txt","w",stdout);
ios::sync_with_stdio(0),cin.tie(0);
while (cin >> s){
if (s[0]=='*') break;
string cor;
cin >> cor;
dic[s[0]] = cor;
}
while (cin >> s){
if (s[0]=='*') break;
string temp = "";
rep1(i,0,(int)s.size()-1){
temp += dic[s[i]];
}
v.push_back({s,temp});
}
sort(v.begin(),v.end());
while (cin >> s){
if (s[0]=='*') break;
cout<<_find(s)<<endl;
}
return 0;
}

【习题 4-6 UVA - 508】Morse Mismatches的更多相关文章

  1. uva 508 - Morse Mismatches(摩斯码)

    来自https://blog.csdn.net/su_cicada/article/details/80084529 习题4-6 莫尔斯电码(Morse Mismatches, ACM/ICPC Wo ...

  2. uva 508 Morse Mismatches

    Samuel F. B. Morse is best known for the coding scheme that carries his name. Morse code is still us ...

  3. UVA 508 Morse Mismatches JAVA

    题意:输入字母和数字的编码,输入词典,输入一段编码,求出对应的单词. 思路:来自https://blog.csdn.net/qq_41163933/article/details/82224703 i ...

  4. UVa 508 Morse Mismatches (模糊暴力)

    题意:莫尔斯电码,输入若干个字母的Morse编号,一个字典和若干编码.对于每个编号,判断它可能的是哪个单词, 如果有多个单词精确匹配,输出第一个单词并加一个“!”:如果无法精确匹配,那么在编码尾部增加 ...

  5. [刷题]算法竞赛入门经典(第2版) 4-6/UVa508 - Morse Mismatches

    书上具体所有题目:http://pan.baidu.com/s/1hssH0KO 代码:(Accepted,10 ms) //UVa508 - Morse Mismatches #include< ...

  6. ACM训练计划建议(写给本校acmer,欢迎围观和指正)

    ACM训练计划建议 From:freecode#  Date:2015/5/20 前言: 老师要我们整理一份训练计划给下一届的学弟学妹们,整理出来了,费了不少笔墨,就也将它放到博客园上供大家参考. 菜 ...

  7. ACM训练计划建议(转)

    ACM训练计划建议 From:freecode#  Date:2015/5/20 前言: 老师要我们整理一份训练计划给下一届的学弟学妹们,整理出来了,费了不少笔墨,就也将它放到博客园上供大家参考. 菜 ...

  8. 动态规划 Dynamic Programming 学习笔记

    文章以 CC-BY-SA 方式共享,此说明高于本站内其他说明. 本文尚未完工,但内容足够丰富,故提前发布. 内容包含大量 \(\LaTeX\) 公式,渲染可能需要一些时间,请耐心等待渲染(约 5s). ...

  9. UVa第五章STL应用 习题((解题报告))具体!

    例题5--9 数据库 Database UVa 1592 #include<iostream> #include<stdio.h> #include<string.h&g ...

随机推荐

  1. CF 447A(DZY Loves Hash-简单判重)

    A. DZY Loves Hash time limit per test 1 second memory limit per test 256 megabytes input standard in ...

  2. oc57--Category 分类

    // // main.m // Category基本使用:1.不修改类而扩充类.2.对于一个庞大的类,分模块开发. #import <Foundation/Foundation.h> #i ...

  3. 使用ALSA编写自己的音频程序【转】

    本文转载自:http://blog.csdn.net/beyondioi/article/details/6994548 Alsa是Linux高级音频接口.面对众多的音频设备,Alsa为Linux音频 ...

  4. OTA制作及升级过程笔记【转】

    本文转载自:http://www.it610.com/article/5752570.htm 1.概述 1.1   文档概要 前段时间学习了AndroidRecovery模式及OTA升级过程,为加深理 ...

  5. [JSOI2016]独特的树叶

    https://zybuluo.com/ysner/note/1177340 题面 有一颗大小为\(n\)的树\(A\),现加上一个节点并打乱编号,形成树\(B\),询问加上的节点最后编号是多少? \ ...

  6. git强制放弃本地更改

    git fetch --allgit reset --hard origin/master origin是服务器上的本地仓库master是分支

  7. C语言和C++的应用领域都在哪些?学C语言好,还是学习C++好?

    从事嵌入式开发十几年,基本上围绕着这两种编程语言展开,都可以直接操作底层的编程语言,用的越熟练越是感觉工具属性越强.虽然两种编程语言分属于不同的编程思想,用的时间长了觉得差异也不是很大,现在就个人的从 ...

  8. http接口 两种调用http接口的方法

    import org.apache.commons.httpclient.HttpClient; import org.apache.commons.httpclient.NameValuePair; ...

  9. jQuery学习笔记之jQuery的Ajax(3)

    jQuery学习笔记之jQuery的Ajax(3) 6.jQuery的Ajax插件 源码地址: https://github.com/iyun/jQueryDemo.git ------------- ...

  10. (转)i686只是cpu的指令等级,包括32bit和64bit

    i代表intel系列的cpu 386 几乎适用于所有的 x86 平台,不论是旧的 pentum 或者是新的 pentum-IV 与 K7 系列的 CPU等等,都可以正常的工作! 那个 i 指的是 In ...