hdu 1159

题意:求最长子序列


#include<iostream>
#include<cstring>
using namespace std;
int max(int x,int y)
{
    if(x>y) return x;
    return y;
}
int map[1001][1001];
char s1[1001],s2[1001];
int main()
{
    
    while(cin>>s1+1>>s2+1)
    {
        memset(map,0,sizeof(map));
        int l1=strlen(s1+1);
        int l2=strlen(s2+1);
        for(int  i=1;i<=l1;i++)
            for(int j=1;j<=l2;j++)//每次取i段与l2比较 取最大值
            {
                if(s1[i]==s2[j])        
                    map[i][j]=max(map[i-1][j],map[i-1][j-1]+1);//有两个状态1 取(i-1)段算到j时的最大值 也就是上一次算的这是一个状态
                //2取i-1段算到j-1时的最大值+1
                //这是一个决策        
                else            
                    map[i][j]=max(map[i-1][j],map[i][j-1]);
                
            }
            cout<<map[l1][l2]<<endl;
    }
    return 0;
}

hdu 1159,布布扣,bubuko.com

时间: 2024-08-06 02:45:41

hdu 1159的相关文章

POJ 1159 Palindrome &amp;&amp; HDU 1159 Common Subsequence

1.先说说杭电的1159吧! 这道题是基础动规,比较简单! 就是要你求最长的公共子序列(不要优化) 动态转移方程: dp[i+1][j+1]=(a[i]=b[i])?dp[i][j]+1:max(dp[i+1][j],dp[i][j+1]) AC代码: #include<stdio.h> #include<string.h> #include<algorithm> using namespace std; #define N 520 char a[N],b[N]; in

HDU 1159——Common Subsequence(DP)

Common Subsequence Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 23279    Accepted Submission(s): 10242 Problem Description A subsequence of a given sequence is the given sequence with some e

HDU 1159:Common Subsequence(最长公共子序列)

Common Subsequence Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 23108    Accepted Submission(s): 10149 Problem Description A subsequence of a given sequence is the given sequence with some e

hdu 1159 Common Subsequence(最长公共子序列 DP)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1159 Common Subsequence Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 25416    Accepted Submission(s): 11276 Problem Description A subsequence of

HDU 1159——Common Subsequence

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1159 题目大意:给定两个字符串,求出两个字符串最大公共字符串. 一开始的话是没有什么思路的,后来除了借鉴书上p275<算法竞赛—入门经典>和某位博主的详细讲解,才算是明白了 借鉴链接:http://blog.csdn.net/a_eagle/article/details/7213236 代码: 1 #include<iostream> //p275 2 #include<cst

hdu 1159 common sequence (最长公共子序列 dp)

http://acm.hdu.edu.cn/showproblem.php?pid=1159 题意 : 给出两个字符串 求出最长公共子序列 思路: if(str1[i]==str2[j]) { dp[i][j]=max(dp[i-1][j-1]+1,max(dp[i-1][j],dp[i][j-1])); } else dp[i][j]=max(dp[i-1][j],dp[i][j-1]); #include<cstdio> #include<cstring> #include&l

hdu 1159 Common Subsequence(最长公共子序列)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1159 Common Subsequence Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 37551    Accepted Submission(s): 17206 Problem Description A subsequence of

题解报告:hdu 1159 Common Subsequence

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1159 Problem Description 给定序列的子序列是给定的序列,其中有一些元素(可能没有)被遗漏. 给定一个序列X = <x1,x2,...,xm>如果存在严格递增的序列<i1,i2,...,则另一个序列Z = <z1,z2,...,zk>是X的子序列. ...,ik>的索引,使得对于所有j = 1,2,...,k,xij = zj. 例如,Z = <a,

HDU 1159 Common Subsequence(裸LCS)

传送门: http://acm.hdu.edu.cn/showproblem.php?pid=1159 Common Subsequence Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 47676    Accepted Submission(s): 21890 Problem Description A subsequence of