poj 1035
http://poj.org/problem?id=1035
poj的一道字符串的水题,不难,但就是细节问题我也wa了几次
题意就是给你一个字典,再给你一些字符,首先如果字典中有这个字符串,则直接输出,如果没有的话,那就找字符串加一个字符或少一个字符或者换一个字符是否可以在字典中找到相应的字符串
解题思路:我是用string类型的,比较方便看两个字符串是否相等,用char的话,就是strcmp函数也行。
如果找不到相等的,那么久分别在字典中找到与这个字符串的长度相差1的或者相等的。
然后匹配,如果匹配的结果相差一个则输出
#include <stdio.h>
#include <string.h>
#include <string>
#include <iostream>
#include <stdlib.h> using namespace std; string str[],str1[]; int main()
{
int dic=,need=;
while(cin>>str[dic]){
if(str[dic]=="#") break;
dic++;
}
while(cin>>str1[need]){
if(str1[need]=="#") break;
need++;
}
//qsort(str,dic,sizeof(str[0]),cmp); //没用的,最开始我是以为要对字典排序输出,其实并不用
for(int i=;i<need;i++){
int flog=; //标记,如果找得到相同的字符串,则continue。
for(int j=;j<dic;j++){
if(str1[i]==str[j]) {
cout<<str1[i]<<" is correct"<<endl;
flog=;
break;
}
}
if(flog==) continue;
int len=str1[i].size();
cout<<str1[i]<<":";
for(int j=;j<dic;j++){
int strl=str[j].size();
if(strl==len||strl==len+||strl==len-){ //字符串相差1的或者相等的,就用来匹配是否有可能相差一个字符,这是一种减枝的办法。
int ans=;
if(len>strl){ //吧那个较长的字符作为被匹配的,用短的来匹配长的字符串。
for(int m=,d=;m<len;m++){
if(str1[i][m]==str[j][d]){
ans++;
d++;
}
}
}else if(len<strl){
for(int m=,d=;m<strl;m++){
if(str[j][m]==str1[i][d]){
ans++;
d++;
}
}
}else if(len==strl){
for(int m=,d=;m<strl;m++,d++)
if(str[j][m]==str1[i][d]) ans++;
}
if(len>=strl&&ans==len-) cout<<" "<<str[j];
if(len<strl&&ans==len) cout<<" "<<str[j];
}
}
cout<<endl;
}
return ;
}
poj 1035的更多相关文章
- POJ 1035 代码+具体的目光
Spell checker Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 19319 Accepted: 7060 Descri ...
- poj 1035 Spell checker(水题)
题目:http://poj.org/problem?id=1035 还是暴搜 #include <iostream> #include<cstdio> #include< ...
- poj 1035 Spell checker(hash)
题目链接:http://poj.org/problem?id=1035 思路分析: 1.使用哈希表存储字典 2.对待查找的word在字典中查找,查找成功输出查找成功信息 3.若查找不成功,对word增 ...
- POJ 1035 Spell checker 字符串 难度:0
题目 http://poj.org/problem?id=1035 题意 字典匹配,单词表共有1e4个单词,单词长度小于15,需要对最多50个单词进行匹配.在匹配时,如果直接匹配可以找到待匹配串,则直 ...
- POJ 1035 Spell checker(串)
题目网址:http://poj.org/problem?id=1035 思路: 看到题目第一反应是用LCS ——最长公共子序列 来求解.因为给的字典比较多,最多有1w个,而LCS的算法时间复杂度是O( ...
- poj 1035 Spell checker ( 字符串处理 )
Spell checker Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 16675 Accepted: 6087 De ...
- poj 1035 Spell checker
Spell checker Time Limit: 2000 MS Memory Limit: 65536 KB 64-bit integer IO format: %I64d , %I64u J ...
- 【POJ 1035】Spell checker
题 题意 每个单词,如果字典里存在,输出”该单词 is correct“:如果字典里不存在,但是可以通过删除.添加.替换一个字母得到字典里存在的单词,那就输出“该单词:修正的单词”,并按字典里的顺序输 ...
- Spell checker(poj 1035)
题意: 此题是一个字符串的问题,首先要给出一个字典,里面存储了数个单词.而后,给出一个单词,如果字典中存在,那么就输出correct,如果字典中没有,那么就要判断是不是这个单词有错误,错误有3 ...
随机推荐
- C++中const 的各种用法
C++中const 关键字的用法 const修饰变量 const 主要用于把一个对象转换成一个常量,例如: ; size = ; // error: assignment of read-only v ...
- HBase命令(二) -- 表操作
创建表 hbase shell> create 'mytable','col1','col2' //建表语句 create '表名','列簇名','列簇名','列簇名' hbase shell& ...
- MVC中 _ViewStart _Layout Index三个页面中的加载顺序
MVC学习中忽然想到一个问题.. 在访问一个Index.cshtml页面时, MVC的加载顺序是怎么样的呢? 首先说下我的结论 . _ViewStart.cshtml . Index.cshtml . ...
- Ajax异步刷新地址栏
公司项目后台使用现成的UI框架,DevExpress,jqGrid,XXXUI之类的,这些展示数据列表的控件/插件,基本是异步的. 这倒也好,有变化也只是数据那一块变化,不会重新加载整个页面. 但是, ...
- [EWS]在exchange中的标识符
摘要 最近在用ews的方式开发邮箱服务,包括写邮件,查看某封邮件的详情,回复,全部回复及转发功能.在获取收件箱的时候,关于唯一标识符的问题.也有点困惑,在每个邮件item中,存在一个changeKey ...
- Linux服务器管理: 系统的进程管理终止进程kill命令
在Linux中如何用kill终止进程: kill -l [root@localhost~]#kill -l 可以看到kill中有很多的 常用: -1 是重启一个进程 -9 是强制杀死进程 ...
- CSS鼠标响应事件经过、移动、点击示例介绍
本文为大家介绍下CSS 鼠标响应事件:鼠标经过CSS.鼠标移动CSS.鼠标点击CSS以及示例,喜欢的朋友可以参考下 几种鼠标触发CSS事件. 说明: onMouseDown 按下鼠标时触发 onM ...
- [译]在AngularJS中何时应该使用Directives,Controllers或者Service
原文: http://kirkbushell.me/when-to-use-directives-controllers-or-services-in-angular/ Services Servic ...
- 【MongoDB】MongoDb的“not master and slaveok=false”错误及解决方法
链接mongodb报错如下 2016-03-14T16:26:00.912+0800 E QUERY [thread1] Error: listDatabases failed:{ "ok& ...
- 安装SQL Server 2012 『企业中文版』
安装 SQL Server 前,请详细参阅:计划安装SQL Server2012需求详细http://www.cnblogs.com/chhuang/p/3623198.html 安装 SQL Ser ...