美文网首页
POJ - 1035

POJ - 1035

作者: Poisson_Lee | 来源:发表于2019-08-18 09:26 被阅读0次
#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(); }

}

相关文章

网友评论

      本文标题:POJ - 1035

      本文链接:https://www.haomeiwen.com/subject/optrsctx.html