zoukankan      html  css  js  c++  java
  • pku2192Zipper(动态规划题,随机组合两个字符串)

    328K 16MS G++ 859B 2009-01-09 10:02:27

    因为看到最后组合的字符串长度会等于两个字符串长度之和,以为很简单,想用

     while(i<lenf||j<lens){
      if(third[i+j]==first[i])
       i++;
      else if(third[i+j]==second[j])
       j++;
      else
       return 0;
     }
     return 1;

    后来发现错(因为两个字符串中会有相同的字母,如first[i]==second[i]),又想了好一阵子,再借鉴别人的做法:

    1)创建一个数组f[n][m]记录第一个字符串的前n位与第二个字符串的前m位能否组合成第三个字符串的前n+m位。

    2)由于最后组合的字符串长度会等于两个字符串长度之和,那么问题就简单了,可想而知,组合后的字符串最后一位一定来源于第一个字符串或者第二个字符串的最后一位。所以分解为f[n-1][m]和f[n][m-1]的子问题。

    核心代码如下:

    if((f[i-1][j]&&first[i]==third[i+j])||(f[i][j-1]&&second[j]==third[i+j]))
        f[i][j]=1;
       else
        f[i][j]=0;

    初始化工作:

     

    if(first[1]!=third[1]&&second[1]!=third[1])
      return 0;
     else{
     if(first[1]==third[1])
      for(i=1;i<=lenf;i++)
       f[i][0]=1;
     if(second[1]==third[1])
      for(i=1;i<=lens;i++)
       f[0][i]=1;

     }

    代码如下:

     

    Code
  • 相关阅读:
    RHEL7使用ssm命令管理LVM
    LVM命令摘要
    Linux用户磁盘配额
    Linux磁盘分区实战案例
    通过yum升级CentOS/RHEL最小化安装
    RHEL7下PXE+FTP+Kickstart无人值守安装操作系统
    配置VSFTP服务器
    RHEL7下PXE+NFS+Kickstart无人值守安装操作系统
    RHEL7下PXE+Apache+Kickstart无人值守安装操作系统
    html5实现图片自适应手机屏幕页面的css
  • 原文地址:https://www.cnblogs.com/pandy/p/1372326.html
Copyright © 2011-2022 走看看