#include <stdio.h>
#include <string.h>
#include <math.h>
int WordCheck(char in[], char dict[]) {
int len_in = strlen(in);
int len_dict = strlen(dict);
////printf("in is %s dict is %s\n", in, dict);
if (abs(len_in - len_dict) > 1) { return 0; }
if (len_in == len_dict) {
int diff_num = 0;
for (int i = 0; i < len_in; i++) {
if (in[i] != dict[i]) {
diff_num++;
}
if (diff_num == 2) { break; }
}
if (diff_num == 0) {
return 1;
}
else if (diff_num == 1) {
return -1;
}
else {
return 0;
}
}
if (abs(len_in - len_dict) == 1) {
int anchor=0;
int short_len = len_in > len_dict ? len_dict : len_in;
for (int i = 0; i < short_len; i++) {
if (in[i] != dict[i]) {
break;
}
anchor++;
}
if (anchor == short_len) {
return -1;
}
else {
if (len_in > len_dict) {
for (int i = anchor; i < short_len; i++) {
if (in[i + 1] != dict[i]) { return 0; }
}
}
else {
for (int i = anchor; i < short_len; i++) {
if (in[i] != dict[i+1]) { return 0; }
}
}
return -1;
}
}
}
int main() {
char dict[1001][16];
char in[51][16];
int dict_len=0;
int in_len = 0;
while (scanf("%s", dict[dict_len]) && strcmp(dict[dict_len], "#")!=0) { dict_len++; }
while (scanf("%s", in[in_len]) && strcmp(in[in_len], "#") != 0) { in_len++; }
////printf("%d %d",dict_len,in_len);
for (int i = 0; i < in_len; i++) {
int result[1001];
int result_sum=0;
for (int j = 0; j < dict_len; j++) {
result[j] = WordCheck(in[i], dict[j]);
}
for (int j = 0; j < dict_len; j++) {
result_sum = result_sum + result[j];
if (result[j] == 1) {
result_sum = 1;
break;
}
}
if (result_sum == 1) {
printf("%s is correct\n", in[i]);
}
else if (result_sum == 0) {
printf("%s:\n", in[i]);
}
else {
printf("%s:", in[i]);
for (int j = 0; j < dict_len; j++) {
if (result[j] == -1) {
printf(" %s", dict[j]);
}
}
printf("\n");
}
}
while(1) { getchar(); }
}
网友评论