博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdu 1159 Common Subsequence(最长公共子序列,DP)
阅读量:5266 次
发布时间:2019-06-14

本文共 816 字,大约阅读时间需要 2 分钟。

题意:

两个字符串,判断最长公共子序列的长度。

 

思路:

直接看代码,,注意边界处理

 

代码:

char s1[505], s2[505];int dp[505][505];int main(){    while(scanf("%s%s",s1,s2)!=EOF){        int l1=strlen(s1);        int l2=strlen(s2);        mem(dp,0);        dp[0][0]=((s1[0]==s2[0])?1:0);        rep(i,1,l1-1) if(s1[i]==s2[0]) dp[i][0]=1; else dp[i][0]=dp[i-1][0];        rep(i,1,l2-1) if(s1[0]==s2[i]) dp[0][i]=1; else dp[0][i]=dp[0][i-1];        rep(i,1,l1-1){            rep(j,1,l2-1){                if(s1[i]==s2[j]){                    dp[i][j]=max( dp[i-1][j-1]+1,dp[i-1][j] );                    dp[i][j]=max( dp[i][j],dp[i][j-1] );                }else{                    dp[i][j]=max( dp[i-1][j],dp[i][j-1] );                }            }        }        printf("%d\n",dp[l1-1][l2-1]);    }    return 0;}

 

转载于:https://www.cnblogs.com/fish7/p/4246712.html

你可能感兴趣的文章
LeetCode(17) - Letter Combinations of a Phone Number
查看>>
Linux查找命令对比(find、locate、whereis、which、type、grep)
查看>>
路由器外接硬盘做nas可行吗?
查看>>
python:从迭代器,到生成器,再到协程的示例代码
查看>>
Java多线程系列——原子类的实现(CAS算法)
查看>>
多线程《三》进程与线程的区别
查看>>
linux sed命令
查看>>
html标签的嵌套规则
查看>>
[Source] Machine Learning Gathering/Surveys
查看>>
HTML <select> 标签
查看>>
类加载机制
查看>>
tju 1782. The jackpot
查看>>
湖南多校对抗赛(2015.03.28) H SG Value
查看>>
hdu1255扫描线计算覆盖两次面积
查看>>
hdu1565 用搜索代替枚举找可能状态或者轮廓线解(较优),参考poj2411
查看>>
bzoj3224 splay板子
查看>>
程序存储问题
查看>>
Mac版OBS设置详解
查看>>
优雅地书写回调——Promise
查看>>
android主流开源库
查看>>