POJ1035
#include <iostream>
#include <cstdio>
#include <cstring>
#include <vector>
#include <algorithm>
using namespace std;
struct vv
{
char s[20];
int id;
}v[10005];
int cnt=0;
int cmp(struct vv x,struct vv y)
{
return strlen(x.s)<strlen(y.s);
}
int cmp2(struct vv x,struct vv y)
{
return x.id<y.id;
}
void judge(char *s)
{
vector<struct vv> test;
int num=strlen(s);
test.clear();
for(int i=0;i<cnt;i++)
{
if(!strcmp(s,v[i].s)) {printf("%s is correct\n",s);return;}
if(strlen(v[i].s)==num||strlen(v[i].s)==num-1||strlen(v[i].s)==num+1)
{
test.push_back(v[i]);
}
}
sort(test.begin(),test.end(),cmp2);
int ok=0;
printf("%s: ",s);
for(int i=0;i<test.size();i++)
{
if(strlen(test[i].s)==num-1)
{
int ok=0;
for(int j=0;j<num;j++)
{
if(ok==0&&test[i].s[j]==s[j])
continue;
if(ok==1&&test[i].s[j-1]==s[j])
continue;
else
{
if(ok==0) ok=1;
else {ok=2;break;}
}
}
if(ok!=2) printf("%s ",test[i].s);
}
if(strlen(test[i].s)==num)
{
int count=0;
for(int j=0;j<num;j++)
if(test[i].s[j]==s[j]) count++;
if(count==num-1)
printf("%s ",test[i].s);
}
if(strlen(test[i].s)==num+1)
{
int ok=0;
for(int j=0;j<num+1;j++)
{
if(ok==0&&test[i].s[j]==s[j])
continue;
if(ok==1&&test[i].s[j]==s[j-1])
continue;
else
{
if(ok==0) ok=1;
else {ok=2;break;}
}
}
if(ok!=2) printf("%s ",test[i].s);
}
}
printf("\n");
}
int main()
{
char temp[20];
while(true)
{
scanf("%s",temp);
if(!strcmp(temp,"#")) break;
else {
strcpy(v[cnt].s,temp);
v[cnt].id=cnt;
cnt++;
}
}
sort(v,v+cnt,cmp);
struct vv check[55];
while(true)
{
scanf("%s",temp);
if(!strcmp(temp,"#")) break;
else judge(temp);
}
return 0;
}
硬着头皮写下去就OK了。
主要思维量在于少一个字母和多一个字母的情况,
自己的分析还是对的。就是略掉这个字母看继续比较后面的。
不过裸写的速度不够快,二分的思想自己应着重练一下。
POJ1035的更多相关文章
- POJ1035——Spell checker(字符串处理)
Spell checker DescriptionYou, as a member of a development team for a new spell checking program, ar ...
- poj1035 Spell checker
这题目比较简单,把思路搞清楚就可以啦. #include <stdio.h> #include <string.h> +][]; int init(){ ; while(~sc ...
- POJ1035&&POJ3080&&POJ1936
字符串处理专题,很早就写好了然而忘记写blog了 1035 题意:给你一些单词作为字典.然后让你查找一些单词.对于每个单词,如果在字典中就输出它.否则输出所有它通过删除||增加||替换一个字符能得到的 ...
- poj分类 很好很有层次感。
初期: 一.基本算法: (1)枚举. (poj1753,poj2965) (2)贪心(poj1328,poj2109,poj2586) (3)递归和分治法. ( ...
- 【转】POJ题目分类推荐 (很好很有层次感)
OJ上的一些水题(可用来练手和增加自信) (poj3299,poj2159,poj2739,poj1083,poj2262,poj1503,poj3006,poj2255,poj3094)初期: 一. ...
- 【转】ACM训练计划
[转] POJ推荐50题以及ACM训练方案 -- : 转载自 wade_wang 最终编辑 000lzl POJ 推荐50题 第一类 动态规划(至少6题, 和 必做) 和 (可贪心) (稍难) 第二类 ...
- POJ 题目分类(转载)
Log 2016-3-21 网上找的POJ分类,来源已经不清楚了.百度能百度到一大把.贴一份在博客上,鞭策自己刷题,不能偷懒!! 初期: 一.基本算法: (1)枚举. (poj1753,poj2965 ...
- (转)POJ题目分类
初期:一.基本算法: (1)枚举. (poj1753,poj2965) (2)贪心(poj1328,poj2109,poj2586) (3)递归和分治法. (4)递推. ...
- acm常见算法及例题
转自:http://blog.csdn.net/hengjie2009/article/details/7540135 acm常见算法及例题 初期:一.基本算法: (1)枚举. (poj17 ...
随机推荐
- 【BZOJ 3747】 3747: [POI2015]Kinoman (线段树)
3747: [POI2015]Kinoman Time Limit: 60 Sec Memory Limit: 128 MBSubmit: 830 Solved: 338 Description ...
- Wannafly挑战赛17 B
题解 大概就是求证这个 \[\sum_i^nC_{n}^i*C_n^i = C_{2n}^n\] 证明: \[(1+x)^{2n} = [C(0,n)+C(1,n)*x+...+C(n,n)*x^n] ...
- NOIP2017 D2T2宝藏
考场上写的prim一遍过了大样例也没想什么别的,反例也没举出来. 后来才知道由于要乘上深度所以无法贪心. 正解是状压但我不会,考后一个爆搜碾过去了. 心凉. #include<bits/stdc ...
- luoguP3239 [HNOI2015]亚瑟王 概率期望DP
当初怎么想的来着.....又忘了...... 首先,总期望 = 每张卡片的期望之和 求期望,只要我们求出每张卡片被用掉的概率即可 如果直接上状态$f[i][j]$表示在第$i$轮中,第$j$张牌发动的 ...
- PHP配置文件经典漏洞
phithon师父在小蜜圈里放了一个经典的配置文件写入问题漏洞. <?phpif(!isset($_GET['option'])) die();$str = addslashes($_GET[' ...
- 内功心法 -- java.util.LinkedList<E> (6)
写在前面的话:读书破万卷,编码如有神--------------------------------------------------------------------下文主要对java.util ...
- iOS开发系列--音频播放、录音、
音频 在iOS中音频播放从形式上可以分为音效播放和音乐播放.前者主要指的是一些短音频播放,通常作为点缀音频,对于这类音频不需要进行进度.循环等控制.后者指的是一些较长的音频,通常是主音频,对于这些音频 ...
- Ubuntu 16.04开启SFTP服务
说明:其实只要安装了SSH服务就已经具备了SFTP功能,这个用普通客户端无法连接,只能用支持SFTP协议的客户端才能连接. FileZilla作为FTP客户端,它也可以连接SFTP,SFTP的监听端口 ...
- Simple microcontroller-temperature measurement uses only a diode and a capacitor
Using a PN-junction diode for temperature measurement usually depends on its 2‑mV/K temperature coe ...
- MYSQL SSL
http://dev.mysql.com/doc/refman/5.6/en/grant.html