zoukankan      html  css  js  c++  java
  • poj 2192 Zipper

    题意:             给定三个字符串,判断前两个经过字符顺序不变的组合能否变为第三个字符串。            用bool型数组dp[i][j]记录str1的前i个字符和str2的前j个字符能否组合成str3的前i+j个字符。str3的最后一个字符肯定是 str1或str2的最后一个字符,想得到dp[i][j],则必须知道dp[i-1][j](str1的前i-1个字符和str2的前j个字符能否组合成str3的前i-1+j个字符)和dp[i][j-1]str1的前i个字符和str2的前j-1个字符能否组合成str3的前i+j-1个字符),由此将问题分解为str1的前n个字符和str2的前m个字符能否组合成str3的前n+m个字符。最后的s[1][0],s[0][1]可直接得到。dp[str1_len][str2_len],便是最后所求。


    代码:

    #include<iostream>
    #include<cstdio>
    #include<string.h>
    using namespace std ;
    int main(){
        bool dp[300][300] ;
        char str1[300], str2[300], str3[600] ;
        int n, m = 0 ;
        cin >> n ;
        while(n--){
            getchar() ;
            cin >> str1+1 >> str2+1 >> str3+1 ;
            int s1 = strlen(str1+1) ;
            int s2 = strlen(str2+1) ;
            dp[0][0] = true ;
            for(int i=1; i<=s1; i++)            //找出str1从字符串开头与str3连续相同的字符
                if(dp[i-1][0]&&str1[i]==str3[i])
                    dp[i][0] = true ;
                else
                    dp[i][0] = false ;
            for(int i=1; i<=s2; i++)            //找出str2从字符串开头与str3连续相同的字符
                if(dp[0][i-1]&&str2[i]==str3[i])
                    dp[0][i] = true ;
                else
                    dp[0][i] = false ;
            for(int i=1; i<=s1; i++)
                for(int j=1; j<=s2; j++)
                    if(dp[i-1][j]&&str1[i]==str3[i+j]||dp[i][j-1]&&str2[j]==str3[i+j])
    //这里有两种情况可判断s[i][j]是否可行
          dp[i][j] = true ;
                    else
                        dp[i][j] = false ;
            m ++ ;
            cout <<"Data set " << m << "" ;
            if(dp[s1][s2])
                cout << "yes" << endl ;
            else
                cout << "no" << endl ;
        }
        return 0 ;

    } 

  • 相关阅读:
    浅谈FastJson的TypeReference用法
    勾选表中的行数据,点击添加,添加到另一个表中(二)
    获取表单内的所有元素的值 表单格式化插件jquery.serializeJSON
    基于BootStrap的Collapse折叠(包含回显展开折叠的对应状态)
    删除按钮和单条删除合并
    前台校验是否为空
    浅谈js的join()方法
    select前台转义后台取到的值为对应的文本 select同时接受list和map
    SpringBoot图片上传(二)
    给div拼接html 拼接字符串
  • 原文地址:https://www.cnblogs.com/xiaolongchase/p/2137832.html
Copyright © 2011-2022 走看看