• 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开始存的.....

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

  • 相关阅读:
    装饰器
    函数的初识
    python的文件操作
    深浅copy
    set集合,是一个无序且不重复的元素集合
    基础数据类型 :字典
    列表的增删改查
    易错点 默认参数陷阱
    js中Array对象常用方法
    printf用法demo
  • 原文地址:https://www.cnblogs.com/mashen/p/8570053.html
Copyright © 2020-2023  润新知