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 ...
随机推荐
- PHP与Javascript的混合测试
js调用php <?php $num=88; ?> <script> var a = <?php echo $num;?>; alert(a); </scri ...
- C语言动态内存分配
考虑下面三段代码: 片段1 void GetMemory(char *p) { p = (); } void Test(void) { char *str = NULL; GetMemory(str) ...
- highcharts图表中级入门之xAxis label:X(横)坐标刻度值过长截断多行(换行)显示问题说明
在使用highcharts图表的过程中,总会碰到这样一个很是棘手的问题,横坐标刻度值太长,在不换行显示的情况下显得格外拥挤.虽然针对这一问题是可以对其刻度值进行旋转以此来避开显示拥挤问题[如何让hig ...
- PHP缓存机制Output Control详解
开启OB缓存的方式有如下两种: 1. php.ini中开启 output_buffering = 4096 启用了此指令,那么每个PHP脚本都相当于一开始就调用了ob_start()函数,PHP5.5 ...
- Google翻译请求(难点是tk参数)
业务需求需要将一些文字翻译一下··· 但是直接调用接口收费啊啊啊啊(貌似是前几百万字免费,然后就开始收费了)···· 就想研究一下Google翻译接口... 想模拟Google向服务器发送一个Http ...
- HDOJ 3593 The most powerful force
树形DP / 泛化物品的背包...可以去看09年徐持衡论文<浅谈几类背包问题> The most powerful force Time Limit: 16000/8000 MS (Jav ...
- Linux程序编写shell script的格式
#!/bin/bash #program # 在此处写下此程序的作用 #History: #此处写下写此程序的时间 作者 版本号 PATH=/bin:/sbin:/usr/bin:/usr/sbin: ...
- iOS并发编程指南之同步
1.gcd fmdb使用了gcd,它是通过 建立系列化的G-C-D队列 从多线程同时调用调用方法,GCD也会按它接收的块的顺序来执行. fmdb使用的是dispatch_sync,多线程调用a ser ...
- linux 脚本命令匹配并获取下一行数据
三种方式: 匹配“Title”并打印出匹配行的下一行 grep -A 1 'Title' urfile awk '/Title/{getline a;print $0"\n"a ...
- weapp微信小程序初探demo
https://github.com/donglegend/weapp-demo 参考文档开发工具安装微信weapp API git项目源码微信小程序 demo效果展示效果预览