当前位置: 首页> 汽车> 车展 > 房地产信息网首页_濮阳网络诈骗2最新消息_酒店推广渠道有哪些_在线seo关键词排名优化

房地产信息网首页_濮阳网络诈骗2最新消息_酒店推广渠道有哪些_在线seo关键词排名优化

时间:2025/7/9 5:01:41来源:https://blog.csdn.net/weixin_74175349/article/details/144950955 浏览次数: 0次
房地产信息网首页_濮阳网络诈骗2最新消息_酒店推广渠道有哪些_在线seo关键词排名优化

这道题目和最长重复子数组是一个类型的不同之处在于text1[i]!=text2[j]时dp[i][j]时他的值是继承上一行或上一列的最大值,二者dp数组的含义也不一样,这里的dp[i][j]表示的是以text[i]和text2[j]为结尾的子序列最大长度,这也是导致两种问题当判断不等的时候处理逻辑不同,对于子数组由于不能跨元素作为子数组所以不等的时候只能赋值为0,而子序列是可以跨元素的所以不等时是可以继承自上一行和上一列

我这里代码写的臃肿,原因是对于0行索引和0列索引都要单独进行判断,其实还有更好的写法,可以自行去查阅

class Solution {
public:int longestCommonSubsequence(string text1, string text2) {int m=text1.size(),n=text2.size();vector<vector<int>> dp(m,vector<int>(n));//默认全0dp[0][0]=text1[0]==text2[0]?1:0;for(int j=1;j<n;j++){if(text1[0]==text2[j])dp[0][j]=1;elsedp[0][j]=dp[0][j-1];}for(int i=1;i<m;i++){// j为0的情况单独判断if(text1[i]==text2[0])dp[i][0]=1;elsedp[i][0]=dp[i-1][0];for(int j=1;j<n;j++){if(text1[i]==text2[j])dp[i][j]=dp[i-1][j-1]+1;elsedp[i][j]=max(dp[i-1][j],dp[i][j-1]);}}return dp[m-1][n-1];}
};

关键字:房地产信息网首页_濮阳网络诈骗2最新消息_酒店推广渠道有哪些_在线seo关键词排名优化

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: