zoukankan      html  css  js  c++  java
  • POJ 3080 Blue Jeans

    按照 CSGrandeur 的方法做的;

    枚举第一个串的所有子串,并查找是否在其他串中出现,需要注意题目要求在最大长度前提下,输出字典序最小的串,这里也点小难,刚开始没看懂大侠的代码,后来试了几种控制方法,有的需要先把 cstr 清空,显得麻烦,才逐渐理解了;

    # include <stdio.h>
    # include <string.h>
    
    # define N 65
    
    int n;
    char dic[15][N], cstr[N];
    
    char find(void)
    {
        char buf[N], ok;
        int len, i, j;
    
        cstr[0] = 0;
        for (len = 60; len > 2; --len)
        {
            for (j = 60-len; j >= 0; --j)
            {
                memcpy(buf, dic[0]+j, len);
                buf[len] = 0;
                if (strcmp(buf, cstr) < 0 || strlen(cstr) < len)
                {
                    for (i = 1; i < n; ++i)
                        if (strstr(dic[i], buf) == NULL) break;
                    if (i == n) strcpy(cstr, buf);
                }
            }
            if (strlen(cstr) == len) return 1;
        }
        return 0;
    }
    
    int main()
    {
        int T, i;
    
        scanf("%d", &T);
        while (T--)
        {
            scanf("%d", &n);
            for(i = 0; i < n; ++i) scanf("%s", dic[i]);
            if (find()) puts(cstr);
            else puts("no significant commonalities");
        }
    
        return 0;
    }

    //

  • 相关阅读:
    Golang教程:并发介绍
    Go在windows10 64位上安装
    ElasticSearch 聚合
    ElasticSearch深入搜索
    ElasticSearch基础入门
    php安装扩展
    报错提示优化
    NK3C程序配置
    NK3C 业务权限控制
    关于测试方法
  • 原文地址:https://www.cnblogs.com/JMDWQ/p/2582934.html
Copyright © 2011-2022 走看看