zoukankan      html  css  js  c++  java
  • poj 2192

    基本思想就是用d[a][b]表示字符串1的前个字符和字符串2的前b个字符能不能组成目标字符串,若是能则赋值为1,否则复制为零,具体代码如下:经典的动态规划

    #include<iostream>
    #include
    <string>
    #include
    <fstream>

    using namespace std;

    //char a[201],b[201],c[401];
    bool dp[201][401];

    void read(){
    // ifstream cin("in.txt");
    string a,b,c;
    int i,j,k;
    int cas;
    cin
    >>cas;
    for(k=1;k<=cas;k++)
    {
    cin
    >>a>>b>>c;
    //int n1=strlen(a);
    int n1=a.size();
    //int n2=strlen(b);
    int n2=b.size();
    memset(dp,
    0,sizeof(dp));
    //开始没有分清行和列的原因
    for(i=1;i<=n1;i++)
    if(a.substr(0,i)==c.substr(0,i))
    dp[
    0][i]=true;
    else
    dp[
    0][i]=false;
    for( i=1;i<=n2;i++)
    if(b.substr(0,i)==c.substr(0,i))
    dp[i][
    0]=true;
    else
    dp[i][
    0]=false;
    for(i=1;i<=n2;i++)
    for(j=1;j<=n1;j++)
    {
    if((dp[i][j-1]&&a[j-1]==c[i+j-1])||(dp[i-1][j]&&b[i-1]==c[i+j-1]))
    dp[i][j]
    =true;
    else
    dp[i][j]
    =false;
    }
    /*for(i=0;i<=n2;i++)
    {
    for(j=0;j<=n1;j++)
    {
    cout<<dp[i][j]<<" ";
    }
    cout<<endl;
    }
    */
    printf(
    "Data set %d: ",k);
    if(dp[n2][n1])
    cout
    <<"yes"<<endl;
    else
    cout
    <<"no"<<endl;

    }
    }

    int main(){
    read();
    system(
    "pause");
    return 0;
    }

      

  • 相关阅读:
    Django URL 命名空间
    数据库
    iOS之网络数据下载和JSON解析
    IOS之AFNetworking的使用
    IOS之网络数据下载和JSON解析
    IOS之XML解析
    iOS网络基础知识
    iOS开发--Block
    IOS开发——使用数据库
    IOS 开发下拉刷新和上拉加载更多
  • 原文地址:https://www.cnblogs.com/zhanglanyun/p/2113292.html
Copyright © 2011-2022 走看看