zoukankan      html  css  js  c++  java
  • Java实现 蓝桥杯 算法提高VIP Substrings(暴力)

    试题 算法提高 Substrings

    问题描述
      You are given a number of case-sensitive strings of alphabetic characters, find the largest string X, such that either X, or its inverse can be found as a substring of any of the given strings.
    输入格式
      The first line of the input contains a single integer t (1 <= t <= 10), the number of test cases, followed by the input data for each test case. The first line of each test case contains a single integer n (1 <= n <= 100), the number of given strings, followed by n lines, each representing one string of minimum length 1 and maximum length 100. There is no extra white space before and after a string.
    输出格式
      There should be one line per test case containing the length of the largest string found.
    样例输入
    2
    3
    ABCD
    BCDFF
    BRCD
    2
    rose
    orchid
    样例输出
    2
    2
    试题来源
      Tehran 2002 Preliminary

    PS:
    这道题非常感谢网易词典,规避了我致命的英语
    在这里插入图片描述

     
    
    import java.util.Scanner;
    
    public class Main {
        public static void main(String[] args) {
            Scanner sc=new Scanner(System.in);
            int a=sc.nextInt();
            for (int i = 0; i < a; i++) {
                int n=sc.nextInt();
                String[]arr=new String[n];
                String mins="";
                int len = 101;
                int index=0;
                for (int j = 0; j < n; j++) {
                    arr[j]=sc.next();
                    int l = arr[j].length();
                    if (l<len) {
                        len=l;
                        mins=arr[j];
                        index=j;
                    }
                }
                for (int j = len; j >=0 ; j--) {
                    boolean f=true;
                    for (int k = 0; k +j<=len ; k++) {
                        boolean flag1=true;
                        boolean flag2=true;
                        //在最短的字符串里面寻找
                        String sub=mins.substring(k,j+k);
                        for (int l = 0; l < n; l++) {
                            if (l==index) {
                                continue;
                            }
                            //没有找到就换成下一个字符串去查
                            if (!arr[l].contains(sub)) {
                                flag1=false;
                                break;
                            }
                        }
                        //当前字符串如果每个都包含的话就可以退出去了
                        if (flag1) {
                            System.out.println(j);
                            f=false;
                            break;
                        }
                        String sub1=new StringBuilder(sub).reverse().toString();
                        for (int l = 0; l < n; l++) {
                            if (l==index) {
                                continue;
                            }
                            if (!arr[l].contains(sub1)) {
                                flag2=false;
                                break;
                            }
                        }
                        if (flag2) {
                            System.out.println(j);
                            f=false;
                            break;
                        }
                    }
                    if (!f) {
                        break;
                    }
                }
            }
        }
    }
    
    
  • 相关阅读:
    xavier NX编译caffe错误记录(二)
    ubuntu16安装微信
    linux中安装onenote(P3X OneNote)
    ubuntu16中,google浏览器安装OneNote Web Clipper插件
    酒店门锁接口说明
    在xaf 14 中实现 Tonyyang原文中的action权限
    MRP生产计划模式在多品种小批量生产过程中遭遇挑战
    C#代码
    简陋的会计凭证金额输入控件(加强) [转]
    简陋的会计凭证金额输入控件(再加强) [转]
  • 原文地址:https://www.cnblogs.com/a1439775520/p/13074692.html
Copyright © 2011-2022 走看看