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

【题意】

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

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

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

【题解】

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

【代码】

#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;
}

最新文章

  1. js实现前端分页页码管理
  2. 设置 java -jar 的进程显示名称
  3. 谈谈关于Python里面小数点精度控制的问题
  4. GRANT ALL PRIVILEGES 限制某个或所有客户端都可以连接至mysql
  5. java中进制之间的转换
  6. hadoop 补充(转)
  7. LabVIEW设计模式系列——状态机
  8. 业余编程 SQL 编程学习——1 (SQL Server 2008 R2)
  9. Web前端框架与类库
  10. maven_环境变量配置
  11. 破解网页右键被禁止js
  12. Python 2、8、10、16进制间的转换
  13. day10-列表生成式
  14. L1-008 求整数段和
  15. 牛顿法/拟牛顿法/DFP/BFGS/L-BFGS算法
  16. MySQL—练习
  17. linux性能系列--cpu
  18. Sublime Text 3高效实用快捷键
  19. SpringCloud(四)服务发现与消费:以ribbon为例
  20. 【BZOJ】2049: [Sdoi2008]Cave 洞穴勘测 LCT

热门文章

  1. c# 删除程序占用的文件,强力删除文件,彻底删除文件,解除文件占用
  2. BNU 13289 Energetic Pandas DP
  3. Privoxy shadowscocks代理
  4. IntelliJ IDEA :解决idea导入项目爆红
  5. hdu 3037Saving Beans(卢卡斯定理)
  6. IPv6系列-初学者的10个常见困扰
  7. IntelliJ IDEA/PyCharm/WebStorm 2019.1.2 注册码激活
  8. prim解决最小生成树问题
  9. 笔记 — 动画效果(Css3)
  10. web前端利用HTML代码显示符号