poj 1035 串
2015-12-10 19:43
225 查看
直接来代码
#include<iostream> #include<stdio.h> #include<string.h> #include<algorithm> using namespace std; char dir[10005][20]; int num[56][10005]; int rr[56]; char word[56][20]; int dirnum=0; int wordnum=0; bool re(char *a,char *b) { int dif=0; while(*a) { if(*(a++)!=*(b++)) { dif++; if(dif>1) return false; } } return true; } bool del(char *a,char *b) { int dif=0; while(*a) { if(*a!=*b) { a++; dif++; if(dif>1) return false; } else { a++; b++; } } return true; } bool inser(char *a,char *b) { int dif=0; while(*b) { if(*a!=*b) { b++; dif++; if(dif>1) return false; } else { a++; b++; } } return true; } int main() { memset(rr,0,sizeof(rr)); int i=0; while(gets(dir[i])) { //printf("%s\n",dir[i]); if(dir[i][0]=='#') break; dirnum=i; i++; } i=0; while(gets(word[i])) { if(word[i][0]=='#') break; wordnum=i; i++; } memset(rr,0,sizeof(rr)); for(int i=0; i<=wordnum; i++) { for(int j=0; j<=dirnum; j++) { int l1=strlen(word[i]); int l2=strlen(dir[j]); if(abs(l1-l2)<=1) { if(l1==l2) { if(strcmp(word[i],dir[j])==0) { rr[i]=-1; break; } else if(re(word[i],dir[j])) { num[i][rr[i]++]=j; } } if(l1==l2-1) if(inser(word[i],dir[j])) { num[i][rr[i]++]=j; } if(l1==l2+1) if(del(word[i],dir[j])) { num[i][rr[i]++]=j; } } } } for(int i=0; i<=wordnum; i++) { if(rr[i]==-1) { printf("%s is correct\n",word[i]); } else { printf("%s:",word[i]); for(int j=0; j<rr[i]; j++) { if(j<rr[i]) printf(" "); int t=num[i][j]; printf("%s",dir[t]); } printf("\n"); } } }
相关文章推荐
- Android-4-X界面开发那点事
- Linux用户空间与内核空间数据传递的几点理解和总结
- FLV科普4 FLV头信息解析
- select语句详解
- 结合框架的方法
- BZOJ2763, 最短路
- UVA—10817 Headmaster's Headache
- shopxx研究
- nginx location
- 使用9Patch图片作为背景
- Caffe 安装教程 (Mac OS)
- Cocoapods完整使用
- <原创>一串简单的代码牵扯出的session,cookie,$_session,$_cookie之间关系问题
- dbms_job和dbmsi_job
- Redhat7 安装mariadb(原mysql)
- java语言编程的30条建议
- 《代码大全》之表驱动法
- poj 3617
- 机器学习:各算法小结(3)
- CCF真题之Z字形扫描