题目地址:POJ 1035

题意:输入一部字典。输入若干单词。 若某个单词能在字典中找到,则输出corret。若某个单词能通过 变换 或 删除 或 加入一个字符后。在字典中找得到。则输出这些单词。输出顺序依据 输入的那部字典的字典序;若某个单词不管操作与否都无法在字典中找得到,则输出空。

思路:关于全然匹配的就直接输出就好。解题关键在不全然匹配的情况:比較时我们先算两个单词长度差之差,有三种情况:len1=strlen(str)len2=strlen(mp[n]]

假设len1==len2则是可能有一个字符不一样;逐个字符比較。统计不同字符数

假设len1+1==len2则是少一个字符。逐个字符比較,假设有字符不同。则mp[n]字符下标往下移动一位。str不变,不同字符数加1

假设len1-1==len2则是多一个字符,逐个字符比較。假设有字符不同。则str字符下标往下移动一位。mp[n]不变。不同字符数加1

#include <stdio.h>
#include <math.h>
#include <string.h>
#include <stdlib.h>
#include <iostream>
#include <sstream>
#include <algorithm>
#include <set>
#include <queue>
#include <stack>
#include <map>
#pragma comment(linker, "/STACK:102400000,102400000")
using namespace std;
typedef __int64 LL;
const int inf=0x3f3f3f3f;
const double pi= acos(-1.0);
const double esp=1e-7;
const int maxn=10010;
char mp[maxn][20];
char str[20];
int check(int n)
{
int i,j;
int cnt;
int len1=strlen(str);
int len2=strlen(mp[n]);
if(len1-len2==1) {
cnt=0;
i=j=0;
for(; i<len1;) {
if(str[i]!=mp[n][j]) {
cnt++;
i++;
} else {
i++;
j++;
}
}
if(cnt==1)
return 1;
return 0;
} else if(len1==len2) {
cnt=0;
i=j=0;
for(; i<len1;) {
if(str[i]!=mp[n][j])
cnt++;
i++,j++;
}
if(cnt==1)
return 1;
return 0;
} else if(len1-len2==-1) {
cnt=0;
i=j=0;
for(; j<len2;) {
if(str[i]!=mp[n][j]) {
cnt++;
j++;
} else {
i++;
j++;
}
}
if(cnt==1)
return 1;
return 0;
}
return 0;
}
int main()
{
int n=0,i;
while(~scanf("%s",mp[n])) {
if(mp[n][0]=='#')
break;
n++;
}
while(~scanf("%s",str)) {
if(str[0]=='#')
break;
for(i=0; i<n; i++) {
if(strcmp(str,mp[i])==0) {
printf("%s is correct\n",str);
break;
}
}
if(i==n) {
printf("%s:",str);
for(i=0; i<n; i++)
if(check(i))
printf(" %s",mp[i]);
puts("");
}
}
return 0;
}

最新文章

  1. ABBYY FineReader 12对系统有哪些要求
  2. python笔记集合
  3. ios 项目里常用的宏
  4. 在执行Action之间检验是否登录
  5. 程序中使用gc_enable() 和 gc_disable()开启和关闭
  6. 二、secureCRT的 使用过程
  7. oschina数据库相关
  8. Ubuntu12.04安装配置Theano
  9. jquery-post get 同步问题
  10. CSS3动画箭头
  11. GWAS研究中case和control的比例是有讲究的?
  12. 《ServerSuperIO Designer IDE使用教程》-4.增加台达PLC驱动及使用教程,从0到1的改变。发布:v4.2.3版本
  13. php 中使用正则
  14. JS DOM操作(五) Window.docunment对象——操作元素
  15. 怎样查看SSL证书的有效期?自动续期是否生效?
  16. java多态性方法的重写Overriding和重载Overloading详解
  17. laravel 使用 vue (gulp)
  18. Web API 2 入门——Web API 2中的操作结果(谷歌翻译)
  19. 关于android项目的习惯
  20. CentOS中配置php环境

热门文章

  1. axios的坑
  2. 洛谷P4894 GodFly求解法向量
  3. FZU 1980 AbOr&#39;s story
  4. hdu5137 How Many Maos Does the Guanxi Worth(单源最短路径)
  5. Android Bitmap太大导致ImageView不显示的问题
  6. mysql-创建和操作表
  7. 【Struts2二】结果集(result-type)
  8. netty学习(二)--传统的bio编程
  9. Compile OpenCASCADE7.3 with VS2008
  10. SQL Server 2008 备份数据库