zoukankan      html  css  js  c++  java
  • 【小米OJ-交叉队列】动态规划

            import java.util.*;
    
    public class Main {
        public static void main(String args[]) {
            Scanner scan = new Scanner(System.in);
            String line;
            while (scan.hasNextLine()) {
                line = scan.nextLine().trim();
                System.out.println(Main.solution(line));
            }
        }
        private static  String solution(String line){
            String str[] = line.split(",");
            int len1 = str[0].length();
            int len2 = str[1].length();
            int len3 = str[2].length();
    
            if(len3!=len1+len2) return false+"";
            if(len1==0) return (len2==len3)+"";
            if(len2==0) return (len1==len3)+"";
    
            int dp[][]=new int[len1+1][len2+1];
            dp[0][0] = 1;
    
            for(int i=1;i<=len1;i++)///判断在len1范围内的第一个字符串状态如何,即是否存在第三个字符串中
                if(str[0].charAt(i-1)==str[2].charAt(i-1))
                dp[i][0] = dp[i-1][0];
    
            for(int i=1;i<=len2;i++)///判断在len2范围内的第二个字符串状态,即是否存在第三个字符串中
                if(str[1].charAt(i-1)==str[2].charAt(i-1))
                    dp[0][i] = dp[0][i-1];
    
             for(int i=1;i<=len1;i++)
                 for(int j=1;j<=len2;j++){
                     int k = i+j;
                     if(str[0].charAt(i-1)==str[2].charAt(k-1)&&dp[i-1][j]==1)
                         dp[i][j] = dp[i-1][j];
                     if(str[1].charAt(j-1)==str[2].charAt(k-1)&&dp[i][j-1]==1)
                         dp[i][j] = dp[i][j-1];
                 }
    
             if(dp[len1][len2]==1) return true+"";
             return false+"";
        }
    }
    

      

    不忘初心,方得始终。只有走过弯路,才更确信当初最想要的是什么。
  • 相关阅读:
    UINavigation Controller
    多表连接原理
    关于内存管理
    UITabBar Contoller
    网站优化HTTP应用
    网站优化ASP.net页面跳转方式优化
    网站优化缓存访问的改进
    马化腾关于产品设计与用户体验的培训(转)
    聚聚呀平台系统结构图
    网站产品支付
  • 原文地址:https://www.cnblogs.com/wszhu/p/12800254.html
Copyright © 2011-2022 走看看