UVa 508 摩斯码匹配单词
来源:互联网 发布:电信网络机顶盒好用吗 编辑:程序博客网 时间:2024/05/17 07:48
/** 20171215*//*multi match !need make up from tail or delete tail ?than same*/#include <cstdio>#include <cstring>#include <algorithm>using namespace std;char sC[30][10];char sN[20][10];char ans[1000][1000];char mtc[1000][5000];int cnt = 0;int main(){ memset(sC,0,sizeof(sC)); memset(sN,0,sizeof(sN)); memset(ans,0,sizeof(ans)); memset(mtc,0,sizeof(mtc)); //read dictionary for(int i=0;i<26;i++) scanf("%*s%s",sC[i]); for(int i=0;i<10;i++) scanf("%*s%s",sN[i]); scanf("%*s"); //read word while(scanf("%s",ans[cnt])==1&&ans[cnt][0]!='*') { int l = strlen(ans[cnt]); int loc = 0; for(int i=0;i<l;i++) { if(ans[cnt][i]>='A'&&ans[cnt][i]<='Z') { int key = ans[cnt][i] - 'A'; strcat(mtc[cnt],sC[key]); }else { int key = ans[cnt][i] - '0'; strcat(mtc[cnt],sN[key]); } } cnt++; } //for(int i=0;i<cnt;i++) printf("%s %s\n",ans[i],mtc[i]); char res[5000]; while(scanf("%s",res)==1&&res[0]!='*') { int k = 0; int t = 0; for(int i=0;i<cnt;i++) { if(strcmp(res,mtc[i])==0) { t = i; k++; } } if(k==1) printf("%s\n",ans[t]); else if(k>1) printf("%s!\n",ans[t]); else { int m = -1; int n = 5000; int resl = strlen(res); for(int i=0;i<cnt;i++) { int mtcl = strlen(mtc[i]); bool flag = true; for(int j=0;flag&&j<min(mtcl,resl);j++) { if(res[j]!=mtc[i][j]) flag = false; } if(flag&&abs(mtcl-resl)<n) { n = abs(mtcl - resl); m = i; } } if(m!=-1) printf("%s?\n",ans[m]); else printf("None\n"); } } return 0;}
阅读全文
0 0
- UVa 508 摩斯码匹配单词
- UVA 156 如何无序的匹配单词
- python 摩斯码
- 如何学习摩斯码
- 妙用摩斯码
- 摩斯码的道理
- 单词匹配
- 单词匹配
- 关于摩斯码的介绍
- vi 匹配单词"\<"和"\>"
- Linux vi 匹配单词
- ACM之单词匹配
- 习题单词数字匹配
- perl-单词边界匹配
- 单词匹配算法
- mysql 绝对单词匹配
- Word Pattern--单词匹配
- UVA 10129 单词
- python学习之路day2-循环
- Linux下原子操作函数
- HTML学习小结之HTML标签
- 【腾讯TMQ】Appium:轻松玩转app+webview混合应用自动化测试
- 数独解法的Python实现
- UVa 508 摩斯码匹配单词
- transwarp Slipstream 简介之高级功能
- 从0到1,开启vue_mobile---横竖屏需求处理
- V-1.8.2 underscore源码解析(一)
- 页面禁止选中内容 IE6以上方法
- 关于变量定义,声明,宏定义等
- URL锚点
- 图灵赠书——程序员12月书讯
- mysql分表方法—–MRG_MyISAM引擎分表法