POJ3080-Blue Jeans

来源:互联网 发布:三端口环行器 编辑:程序博客网 时间:2024/06/05 22:56

暴力点,解题的方式暴力点。
通过枚举第一个字符串中的所有长度大于3的子串然后逐一去看是否匹配即可。

#include <cstdio>#include <cstring>char str[15][70];char pat[70];char ans[70];int main(int argc, char const *argv[]) {    int t;    scanf("%d", &t);    while (t--) {        int m;        scanf("%d", &m);        for (int i = 0; i < m; i++) {            scanf("%s", str[i]);        }        int cnt = 0;        int len = strlen(str[0]);        for (int i = 0; i < len; i++) {            for (int j = 3; i + j - 1 < len; j++) {                bool ok = true;                for (int k = 1; k < m; k++) {                    memset(pat, '\0', sizeof(pat));                    strncpy(pat, str[0] + i, j);                    if (strstr(str[k], pat) == NULL) {                        ok = false;                        break;                    }                }                if (ok) {                    if (j > cnt || (j == cnt && strcmp(pat, ans) < 0)) {                        memset(ans, '\0', sizeof(ans));                        strcpy(ans, pat);                        cnt = j;                    }                } else {                    break;                }            }        }        if (cnt < 3) {            puts("no significant commonalities");        } else {            puts(ans);        }    }    return 0;}
0 0
原创粉丝点击