• HDU-1159(Common Subsequence)(贪心)(动态规划)~~~~~~


    题解出处:http://blog.csdn.net/a995549572/article/details/50829875

    题目大致意思就是给你两个字符串,求出这两个字符串的最长子序列;

    主要还是找状态转移方程式;辅助图帮助理解(但是我赶脚这个图还是带自己划一下才能好好的理解状态转移方程式)

                    if(a[i-1]==b[j-1])
                        dp[i][j]=dp[i-1][j-1]+1;
                    else
                        dp[i][j]=max(dp[i-1][j],dp[i][j-1]);

    #include <iostream>
    #include <stdio.h>
    #include <algorithm>
    #include <math.h>
    #include <string.h>
    using namespace std;
    int a[1002],dp[1002][1002];
    int main()
    {
        char a[1002],b[1002];
        while(scanf("%s%s",a,b)!=EOF)
        {
            int i,j;
            int len=strlen(a);
            int le=strlen(b);
            memset(dp,0,sizeof(dp));
            for(i=1; i<=len; i++)
            {
                for(j=1; j<=le; j++)
                {
                    if(a[i-1]==b[j-1])
                        dp[i][j]=dp[i-1][j-1]+1;
                    else
                        dp[i][j]=max(dp[i-1][j],dp[i][j-1]);
                }
            }
            printf("%d
    ",dp[len][le]);
        }
        return 0;
    }

    dp题,注意以%s输入的时候数组是从0开始存的.....

    马上天梯赛了  选拔赛类时候出个这就懵逼了,还是带狂刷一波题啊.............

  • 相关阅读:
    Linux05——用户操作
    租房子-----多选题
    查询
    增删
    PHP基础
    数据库--高级查询
    CRUD查询
    CRUD操作
    数据库
    轮播
  • 原文地址:https://www.cnblogs.com/mashen/p/8570053.html
Copyright © 2020-2023  润新知