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;
                    }
                }
            }
        }
    }
    
    
  • 相关阅读:
    UVALive 7509 Dome and Steles
    HDU 5884 Sort
    Gym 101194H Great Cells
    HDU 5451 Best Solver
    HDU 5883 The Best Path
    HDU 5875 Function
    卡特兰数
    UVa 11729 Commando War 突击战
    UVa 11292 The Dragon of Loowater 勇者斗恶龙
    Spark Scala Flink版本对应关系
  • 原文地址:https://www.cnblogs.com/a1439775520/p/12946149.html
Copyright © 2011-2022 走看看