zoukankan      html  css  js  c++  java
  • hdu1501 动态规划

    这题有两种解题思路,一个是记忆化搜索,一个是dp。

    分别贴代码:

    记忆化搜索:

    #include<iostream>
    #include<cstdio>
    #include<algorithm>
    #include<map>
    #include<cstring>
    char str[1000],a[300],b[300];
    int sum,flag;
    int hash[205][205];
    void dfs(int i,int j,int k)
    {
        if(flag)
            return ;
        if(k==sum)
        {
            flag=1;
            return ;
        }
        if(hash[i][j])
            return ;
        hash[i][j]=1;
        if(a[i]==str[k])
            dfs(i+1,j,k+1);
        if(b[j]==str[k])
            dfs(i,j+1,k+1);
    }
    int main()
    {
        int i,j,t,Case=1;
        scanf("%d",&t);
        while(t--)
        {
            scanf("%s %s %s",&a,&b,&str);
            sum=strlen(str);
            flag=0;
            memset(hash,0,sizeof(hash));
            dfs(0,0,0);
            if(flag)
                printf("Data set %d: yes
    ",Case++);
            else
                printf("Data set %d: no
    ",Case++);
        }
        return 0;
    }

    dp:

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    using namespace std;
    int dp[205][205];
    int main()
    {
        int i,j,l1,l2,sum,t,Case=1;
        char a[205],b[205],str[405];
        scanf("%d",&t);
        while(t--)
        {
            scanf("%s%s%s",&a,&b,&str);
            l1=strlen(a);
            l2=strlen(b);
            memset(dp,0,sizeof(dp));
            dp[0][0]=1;
            for(i=0;i<=l1;i++)
                for(j=0;j<=l2;j++)
                {
                    if(i>0&&a[i-1]==str[i+j-1]&&dp[i-1][j])
                        dp[i][j]=1;
                    if(j>0&&b[j-1]==str[i+j-1]&&dp[i][j-1])
                        dp[i][j]=1;
                }
            if(dp[l1][l2])
                printf("Data set %d: yes
    ",Case++);
            else
                printf("Data set %d: no
    ",Case++);
        }
        return 0;
    }
  • 相关阅读:
    团队-科学计算器-成员简介及分工
    提交错误
    《结对-结对编项目作业名称-需求分析》
    对软件工程课程的期望
    自我介绍
    课堂作业0
    selenium+Java刷新浏览器
    不要焦虑~~
    JAVA代码实现得到指定文件夹下的文件名
    安全检测检查清单(IOS版APP)
  • 原文地址:https://www.cnblogs.com/wangfang20/p/3177979.html
Copyright © 2011-2022 走看看