zoukankan      html  css  js  c++  java
  • LIS 与 LCS

     

     

     

     例1:

     

    import java.util.Scanner;
    import java.util.Arrays;
    class Main{
        public static void main(String[] args) 
        {
            Scanner sc=new Scanner(System.in);
            int n =sc.nextInt();
            int []a=new int[1001];
            for (int i=1;i<=n ;i++ )
            {
                a[i]=sc.nextInt();
            }
            int []dp=new int[1001];
            for(int i=1;i<=n;i++){
                dp[i]=1;
                for(int j=1;j<i;j++){
                    if(j<i&&a[i]<=a[j]){
                        dp[i]=Math.max(dp[i],dp[j]+1);
                    }
                }
                
            }
            Arrays.sort(dp);
            System.out.println(dp[dp.length-1]);
            
        }
    }

    例2:

     

    import java.util.Scanner;
    import java.util.Arrays;
    class Main{
        public static void main(String[] args) 
        {
            Scanner sc=new Scanner(System.in);
            int n=sc.nextInt();
            int []a=new int [1001];
            int ans=-1;
            for(int i=1;i<=n;i++){
                a[i]=sc.nextInt();            
            }
            int []dp1=new int[1001];
            int []dp2=new int[1001];
            for(int i=1;i<=n;i++){
                dp1[i]=1;
                for(int j=1;j<i;j++){
                    if(a[j]>=a[i]){
                        dp1[i]=Math.max(dp1[i],dp1[j]+1);
                    }
                }
                
            }
            for(int i=n;i>=1;i--){
                dp2[i]=1;
                for(int j=n;j>i;j--){
                    if(a[j]>=a[i]){
                        dp2[i]=Math.max(dp2[i],dp2[j]+1);
                    }
                }
                
            }
        for(int i=1;i<=n;i++){
            ans=Math.max(ans,dp1[i]+dp2[i]-1);
        }
        System.out.println(n-ans);
    
        }
    }

     例3:

     

    import java.util.Scanner;
    import java.util.Arrays;
    class Main{
        public static void main(String[] args) 
        {
            Scanner sc=new Scanner(System.in);
            String s1=sc.nextLine();
            String s2=sc.nextLine();
            int [][]lcs=new int[1001][1001];
            for(int i=1;i<=s1.length();i++){
                for(int j=1;j<=s2.length();j++){
                    if(s1.charAt(i-1)==s2.charAt(j-1)){
                        lcs[i][j]=lcs[i-1][j-1]+1;
                    }else{
                        lcs[i][j]=Math.max(lcs[i][j-1],lcs[i-1][j]);
                    }
    
                }
            }
        
            System.out.println(lcs[s1.length()][s2.length()]);
        }
    }

    例4:

     

    import java.util.Scanner;
    class Main{
        public static void main(String[] args) 
        {
            Scanner sc=new Scanner(System.in);
            String s =sc.nextLine();
            String s1="";
            int [][]dp=new int[3001][3001];
            char [] chars=s.toCharArray();
            for(int i=chars.length-1;i>=0;i--){
                s1+=chars[i];
            }
            for (int i=1;i<=s.length() ;i++ )
            {
                for (int j=1 ;j<=s1.length() ;j++ )
                {
                    if(s.charAt(i-1)==s1.charAt(j-1))
                    {
                        dp[i][j]=dp[i-1][j-1]+1;
                    }else{
                        dp[i][j]=Math.max(dp[i-1][j],dp[i][j-1]);
                    }
                }
            }
            int sums=s.length()-dp[s.length()][s1.length()];
            System.out.println(sums);
        }
    }
  • 相关阅读:
    作业3
    学习进度
    作业2
    介绍自己,并介绍github注册过程和初步使用
    mysql显示中文乱码问题解决
    数学能力测试
    C++ Primer总结
    shell脚本
    完全二叉树
    test命令的测试功能
  • 原文地址:https://www.cnblogs.com/pythonbigdata/p/12797547.html
Copyright © 2011-2022 走看看