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

@ 代码随想录算法训练营第8周(C语言)|Day57(动态规划)

@ 代码随想录算法训练营第8周(C语言)|Day57(动态规划)

Day53、动态规划(● 1143.最长公共子序列 ● 1035.不相交的线 ● 53. 最大子序和 动态规划 )

1143.最长公共子序列

题目描述

给定两个字符串 text1 和 text2,返回这两个字符串的最长公共子序列的长度。

一个字符串的 子序列 是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何字符)后组成的新字符串。

例如,“ace” 是 “abcde” 的子序列,但 “aec” 不是 “abcde” 的子序列。两个字符串的「公共子序列」是这两个字符串所共同拥有的子序列。

题目解答

int longestCommonSubsequence(char* text1, char* text2) {int s1=strlen(text1);int s2=strlen(text2);int dp[s1+1][s2+1];memset(dp,0,sizeof(dp));for(int i=1;i<=s1;i++){for(int j=1;j<=s2;j++){if(text1[i-1]==text2[j-1]){dp[i][j]=dp[i-1][j-1]+1;}else{dp[i][j]=fmax(dp[i-1][j],dp[i][j-1]);}}}return dp[s1][s2];
}

题目总结

dp[i][j]:长度为[0, i - 1]的字符串text1与长度为[0, j - 1]的字符串text2的最长公共子序列为dp[i][j]。

1035.不相交的线

题目描述

我们在两条独立的水平线上按给定的顺序写下 A 和 B 中的整数。

现在,我们可以绘制一些连接两个数字 A[i] 和 B[j] 的直线,只要 A[i] == B[j],且我们绘制的直线不与任何其他连线(非水平线)相交。

以这种方法绘制线条,并返回我们可以绘制的最大连线数。

题目解答

int maxUncrossedLines(int* nums1, int nums1Size, int* nums2, int nums2Size) {int dp[nums1Size+1][nums2Size+1];memset(dp,0,sizeof(dp));for(int i=1;i<nums1Size+1;i++){for(int j=1;j<nums2Size+1;j++){if(nums1[i-1]==nums2[j-1]){dp[i][j]=dp[i-1][j-1]+1;}else{dp[i][j]=fmax(dp[i-1][j],dp[i][j-1]);}}}return dp[nums1Size][nums2Size];
}

题目总结

与上题一致。

53. 最大子序和

题目描述

给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。

题目解答

int max(int a,int b){return a>b?a:b;
}
int maxSubArray(int* nums, int numsSize) {int dp[numsSize];dp[0]=nums[0];int res=nums[0];for(int i=1;i<numsSize;i++){dp[i]=max(dp[i-1]+nums[i],nums[i]);res=max(res,dp[i]);}return res;
}

题目总结

dp[i]:包括下标i(以nums[i]为结尾)的最大连续子序列和为dp[i]。连续的就得包括结尾元素,不连续就不需要了。

相关文章:

  • 微服务-微服务API网关Spring-clould-gateway实战
  • android input命令支持多指触摸成果展示-千里马framework实战开发
  • BI 数据分析,数据库,Office,可视化,数据仓库
  • 【Qt】实现 Ctrl + 鼠标滚轮 缩放文本功能
  • 小程序性能优化
  • R语言【base】——scan():读取数据值
  • Android进阶(二十九) 走近 IntentFilter
  • C语言中,设置Linux中系统时间
  • R语言数据分析(五)
  • hbase最新版本配置属性
  • 十大基础排序算法
  • win系统下安装php8.3版本并配置环境变量的详细教程
  • WPF中样式
  • Kubernetes Prometheus 系列|Prometheus介绍和使用|Prometheus+Grafana集成
  • 2024.2.22
  • Asm.js的简单介绍
  • golang中接口赋值与方法集
  • IOS评论框不贴底(ios12新bug)
  • leetcode378. Kth Smallest Element in a Sorted Matrix
  • miaov-React 最佳入门
  • Next.js之基础概念(二)
  • node.js
  • Python_OOP
  • select2 取值 遍历 设置默认值
  • tweak 支持第三方库
  • 将 Measurements 和 Units 应用到物理学
  • 猫头鹰的深夜翻译:JDK9 NotNullOrElse方法
  • 山寨一个 Promise
  • 什么是Javascript函数节流?
  • 思考 CSS 架构
  • 体验javascript之美-第五课 匿名函数自执行和闭包是一回事儿吗?
  • 小李飞刀:SQL题目刷起来!
  • 一道闭包题引发的思考
  • ​什么是bug?bug的源头在哪里?
  • ###51单片机学习(1)-----单片机烧录软件的使用,以及如何建立一个工程项目
  • #周末课堂# 【Linux + JVM + Mysql高级性能优化班】(火热报名中~~~)
  • (14)Hive调优——合并小文件
  • (附源码)springboot 个人网页的网站 毕业设计031623
  • (附源码)ssm码农论坛 毕业设计 231126
  • (附源码)计算机毕业设计ssm电影分享网站
  • (十八)devops持续集成开发——使用docker安装部署jenkins流水线服务
  • (十八)SpringBoot之发送QQ邮件
  • (十六)Flask之蓝图
  • (未解决)jmeter报错之“请在微信客户端打开链接”
  • (转) Android中ViewStub组件使用
  • .net mvc 获取url中controller和action
  • .NET 服务 ServiceController
  • .net快速开发框架源码分享
  • .Net中ListT 泛型转成DataTable、DataSet
  • ?php echo ?,?php echo Hello world!;?
  • @Autowired 与@Resource的区别
  • @Transactional 详解
  • []Telit UC864E 拨号上网
  • []使用 Tortoise SVN 创建 Externals 外部引用目录
  • [BUUCTF]-Reverse:reverse3解析