就是一道暴力题
开数组时一万开成了一千,一直报错,想了好久才发现,>﹏<
#include<cstdio>
#include<cstring>
using namespace std;
char dic[10005][20], check[55][20];
int cnt = 0, num = 0;
void solve(int i)
{
for(int j = 1; j <= cnt; j++){
if(strlen(dic[j]) == strlen(check[i])){
int tmp = 0;
for(int k = 0; k < strlen(dic[j]); k++){
if(dic[j][k] != check[i][k]) tmp++;
}
if(tmp == 1) printf(" %s",dic[j]);
}
else if(strlen(dic[j])+1 == strlen(check[i])){
int p = 0, k;
for(k = 0; k < strlen(check[i]); k++){
if(dic[j][p] == check[i][k]) p++;
}
if(k-p == 1) printf(" %s",dic[j]);
}
else if(strlen(dic[j])-1 == strlen(check[i])){
int p = 0, k;
for(k = 0; k < strlen(dic[j]); k++){
if(dic[j][k] == check[i][p]) p++;
}
if(k-p == 1) printf(" %s",dic[j]);
}
}
}
int main()
{
for(int i = 1;; i++){
scanf("%s",dic[i]);
if(dic[i][0] == '#') break;
++cnt;
}
for(int i = 1;; i++){
scanf("%s",check[i]);
if(check[i][0] == '#') break;
++num;
}
for(int i = 1; i <= num; i++){
int flag = 0;
for(int j = 1; j <= cnt; j++){
if(strcmp(dic[j],check[i]) == 0){
flag = 1;
break;
}
}
if(flag == 1){
printf("%s is correct\n",check[i]);
}
else{
printf("%s:",check[i]);
solve(i);
printf("\n");
}
}
return 0;
}