zoukankan      html  css  js  c++  java
  • POJ 3080 (字符串水题) Blue Jeans

    题意:

    找出这些串中最长的公共子串(长度≥3),如果长度相同输出字典序最小的那个。

    分析:

    用库函数strstr直接查找就好了,用KMP反而是杀鸡用牛刀。

     1 #include <cstdio>
     2 #include <cstring>
     3 
     4 char a[15][70], sub[70];
     5 int p[70], l;
     6 
     7 int cmp(int p1, int p2)
     8 {
     9     for(int i = 0; i < l; ++i)
    10         if(a[0][p1 + l] > a[0][p2 + l]) return p2;
    11     return p1;
    12 }
    13 
    14 int main(void)
    15 {
    16     //freopen("3080in.txt", "r", stdin);
    17     int T;
    18     scanf("%d", &T);
    19     while(T--)
    20     {
    21         int n, cnt = 0;
    22         scanf("%d", &n);
    23         for(int i = 0; i < n; ++i) scanf("%s", a[i]);
    24         
    25         for(l = 60; l >= 3; --l)
    26         {
    27             cnt = 0;
    28             for(int pos = 0; pos <= 60 - l; ++pos)
    29             {
    30                 char temp = a[0][pos + l];
    31                 a[0][pos + l] = '';
    32                 bool flag = true;
    33                 for(int i = 1; i < n; ++i)
    34                 {
    35                     if(strstr(a[i], a[0] + pos) == NULL)
    36                     {
    37                         flag = false;
    38                         break;
    39                     }
    40                     if(!flag) break;
    41                 }
    42                 a[0][pos + l] = temp;
    43                 if(flag)
    44                     p[cnt++] = pos;
    45             }
    46             if(cnt > 0) break;
    47         }
    48         
    49         if(cnt == 0)
    50         {
    51             puts("no significant commonalities");
    52             continue;
    53         }
    54         
    55         int min = p[0];
    56         for(int i = 1; i < cnt; ++i) min = cmp(min, p[i]);
    57         a[0][min + l] = '';
    58         printf("%s
    ", a[0] + min);
    59     }
    60 
    61     return 0;
    62 } 
    代码君
  • 相关阅读:
    直线方程和直线系方程
    多个参数之和积的取值范围
    解析几何习题
    React之Perf
    一文看懂npm、yarn、pnpm之间的区别
    Cannot read property 'properties' of undefined
    为什么要用PolyFill(JS中的修补匠)
    es6-promise
    原生js实现each方法
    有趣的js获取input标签中光标的索引
  • 原文地址:https://www.cnblogs.com/AOQNRMGYXLMV/p/4123723.html
Copyright © 2011-2022 走看看