当前位置: 首页 > news >正文

北龙建设集团有限公司企业网站青岛路桥建设集团有限公司网站

北龙建设集团有限公司企业网站,青岛路桥建设集团有限公司网站,永久免费微信小程序商城,织梦网站备案1143.最长公共子序列 这题和 718.最长重复子数组 的主要差别在于子序列不要求连续了 这样的话哪怕 nums1[i - 1] 和 nums2[j - 1] 不相等也需要继承之前的最长公共子序列#xff0c;具体继承什么#xff1f;继承的是DP数组矩阵中左上方区域#xff08;包含本行和本列的具体继承什么继承的是DP数组矩阵中左上方区域包含本行和本列的的最大值 和 718 相比主要差别在于递推公式 1、DP数组定义两个维度表示两个数组的索引dp[i][j]表示以nums1[i - 1]和nums2[j - 1]为结尾的两个字符串的最长公共子序列长度 2、DP数组初始化首行与首列元素无意义但为了递推公式将其初始化为0其余元素随意 3、递推公式         · 如果nums1[i - 1] nums2[j - 1]那么dp[i][j] dp[i - 1][j - 1] 1同718         · 如果nums1[i - 1] ! nums2[j - 1]dp[i][j] 取dp[i][j - 1] 和 dp[i - 1][j] 中的较大值         左上方矩阵到达dp[i][j]的唯二途径就是dp[i][j - 1] 和 dp[i - 1][j] 所以通过不断递推这两个值可以获取左上方矩阵的最大值 4、遍历顺序从上到下从左到右遍历先遍历nums1或nums2都可以 int longestCommonSubsequence(string text1, string text2) {// DP数组定义以nums1[i - 1]和nums2[j - 1]为结尾的两个字符串的最长公共子数组长度// 首行与首列初始化为0vectorvectorint dp(text1.size() 1, vectorint(text2.size() 1, 0));for (int i 1; i text1.size(); i) {for (int j 1; j text2.size(); j) {if (text1[i - 1] text2[j - 1])dp[i][j] dp[i - 1][j - 1] 1;else {// 画出DP矩阵取矩阵包含本行和本列的左上方区域的最大值dp[i][j] std::max(dp[i][j - 1], dp[i - 1][j]);}}}return dp[text1.size()][text2.size()]; } 1035.不相交的线 这题分析一下内在的要求 1、数值得相等才能连线 2、为了不交叉线的起点和终点的次序必须一样 分析一下其实就是最长公共子序列问题所以代码可以直接照搬 int maxUncrossedLines(vectorint nums1, vectorint nums2) {vectorvectorint dp(nums1.size() 1, vectorint(nums2.size() 1, 0));int ans 0;for (int i 1; i nums1.size(); i) {for (int j 1; j nums2.size(); j) {if (nums1[i - 1] nums2[j - 1])dp[i][j] dp[i - 1][j - 1] 1;elsedp[i][j] std::max(dp[i][j - 1], dp[i - 1][j]);}}return dp[nums1.size()][nums2.size()]; } 53.最大子数组和 这题对比一下贪心解法就能发现dp的无脑之处了 贪心解法需要分析什么情况下可以累加什么时候需要删去 动规解法只要分析好状态以及状态的转移之后的具体判断全部交给递推过程就可以了 1、DP数组定义dp[i]以nums[i]为最后一个元素的最大子数组和 2、DP数组初始化dp[0] nums[0]第一个元素的值作为初始状态 3、递推公式dp[i] 的取值只有两种情况         1、之前的值加上nums[i] dp[i]   nums[i] dp[i - 1]         2、之前的值删去从nums[i]重新开始dp[i]  nums[i]         dp[i] 取以上两种情况的较大值即可不用考虑什么情况下选1什么情况下选2                        dp[i] max(nums[i], nums[i] dp[i - 1]) 4、遍历顺序从左到右遍历 int maxSubArray(vectorint nums) {vectorint dp(nums.size(), 0);dp[0] nums[0];int ans nums[0];for (int i 1; i nums.size(); i) {// dp[i]只能取 nums[i] 或 nums[i] dp[i - 1]dp[i] std::max(nums[i], nums[i] dp[i - 1]);ans std::max(ans, dp[i]);}return ans; }
http://www.pierceye.com/news/889207/

相关文章:

  • 成都p2p网站建设手机网站和app有什么区别
  • 人像摄影作品网站怎么做多个网站单点登录
  • 企业网站设计推广方案外贸seo优化方法
  • 广州网站推广找哪家西安网站制作定制
  • 各大招聘网站上海网页制作方法
  • 舟山建设信息港门户网站网站用途及栏目说明
  • 在线留电话的广告专业搜索引擎seo服务商
  • 网站建设方案说明松山湖网站建设公司
  • 西安网站推广方案网站主机是服务器吗
  • seo站内优化培训北京社保网上服务平台官网
  • 滨海做网站价格呼和浩特市网站公司电话
  • vs2012网站开发环境logo免费下载网站
  • 手机网站懒人模板章丘网站优化
  • 常州做网站的企业中国十大动漫学校
  • 广东手机网站制作电话wordpress 被写入文件
  • 意大利之家设计网站什么是软件开发技术
  • 下载flash网站国外域名备案
  • 网站建设服务费应计入什么科目装饰公司简介内容
  • 淘宝客网站域名备案吗漂亮的ppt模板大全免费
  • 西安外贸网站开发网站后端做留言板功能
  • 自建淘宝客APP网站模板制作网站的公司
  • 最佳线上网站制作模板网站开发 企业 定制系统
  • 怎么将网站设置为首页百度seoo优化软件
  • iis6建设网站浏览wordpress显示在线人数
  • 一键制作单页网站女做受网站
  • 网站推广广告 优帮云开发公司资质哪里查
  • 沈阳网站建设思路做海报的话网站
  • 扬州网站建设suteng崇左网页设计
  • 中文网站模板html做网站 最好的开源cms
  • 个人资料展示网站网站建设网络推广外包服务商