zoukankan      html  css  js  c++  java
  • poj 1035

    一道字符串的题。。不过。。挺麻烦的。。。

      1 #include <iostream>
      2 #include<cstring>
      3 using namespace std;
      4 char dic[10005][20];
      5 char word[55][20];
      6 int diclen[10005];//字典中每个单词的长度
      7 
      8 bool change(char *a, char *b){
      9     int dif = 0;
     10     while(*a){
     11         if(*(a++)!=*(b++)){
     12             dif++;//记录不相同的字符的个数,如果大于1就不合适了。。
     13             if(dif>1)
     14                 return false;
     15         }
     16     }
     17     return true;
     18 }
     19 bool delword(char *a,char *b){
     20     int dif = 0;
     21     while(*a){//以a作为标准
     22         if(*a!=*b){
     23             dif++;
     24             a++;
     25             if(dif>1)
     26                 return false;
     27         }
     28         else{
     29             a++;
     30             b++;
     31         }
     32     }
     33     return true;
     34 }
     35 
     36 bool addword(char *a,char *b){
     37     int dif = 0;
     38     while(*b){//以b作为标准
     39         if(*a!=*b){
     40             b++;
     41             dif++;
     42             if(dif>1)
     43                 return false;
     44         }
     45         else {
     46             a++;
     47             b++;
     48         }
     49     }
     50     return true;
     51 }
     52 int main()
     53 {
     54     int dicnum = 0;
     55     while(cin>>dic[dicnum]){
     56         if(dic[dicnum][0]=='#')
     57             break;
     58         dicnum++;
     59     }
     60 
     61     int wordnum = 0;
     62     while(cin>>word[wordnum]){
     63         if(word[wordnum][0]=='#')
     64             break;
     65         wordnum++;
     66     }
     67     for(int i=0;i<dicnum;i++){//记录字典中每一个单词的长度
     68         diclen[i] = strlen(dic[i]);
     69     }
     70 
     71     for(int i=0;i<wordnum;i++){
     72         int index[10005];
     73         int iindex = 0;
     74         bool flag = false;
     75         int len = strlen(word[i]);
     76         for(int j=0;j<dicnum;j++){
     77             if(len==diclen[j]){//如果长度相同,就测是否完全相同
     78                 if(!strcmp(word[i],dic[j])){
     79                     flag = true;
     80                     break;
     81                 }
     82                 else if(change(word[i],dic[j])){
     83                     index[iindex++] = j;
     84                 }
     85             }
     86             else if(len-diclen[j]==1){//需要测的代码长。而字典中的匹配短
     87                 if(delword(word[i],dic[j]))
     88                     index[iindex++] = j;
     89             }
     90             else if(diclen[j]-len==1){//字典中的匹配单词必要测的单词多一。
     91                 if(addword(word[i],dic[j]))
     92                     index[iindex++] = j;
     93             }
     94         }
     95         if(flag){
     96             cout<<word[i]<<" is correct"<<endl;
     97         }
     98         else{
     99             cout<<word[i]<<": ";
    100             for(int k=0;k<iindex;k++){//输出。。。。
    101                 cout<<dic[index[k]]<<" ";
    102             }
    103             cout<<endl;
    104         }
    105     }
    106 
    107     return 0;
    108 }
  • 相关阅读:
    LIst判断是否为空
    SYBASE数据库基本操作
    Java内部类详解--成员内部类,局部内部类,匿名内部类,静态内部类
    String转jsonarry:字符串:[{"result":"20"},{"result":"21"},{"result":"20"},{"result":"22"}]
    使用HttpURLConnection发送POST请求
    Java 定义字符串数组
    JSP 解决illegal to have multiple occurrences of contentType with different values错误
    javascript 获取url参数值
    外键为','(逗号)拼接ID,连接查询外键表ID
    excel、csv、txt文件数据读取
  • 原文地址:https://www.cnblogs.com/Bang-cansee/p/3195540.html
Copyright © 2011-2022 走看看