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

acwing--动态规划【线性dp】4/20、4/21

1、数字三角形898. 数字三角形 - AcWing题库

涉及i-1一般初始化从1开始

考虑最后一行的数据:f[i][j] = max( f[i-1][j]右上角,f[i-1][j-1]左上角)

注意:1、#include<climits>可以定位INT_MAX,不过还可以用1e9,避免INT_MAX+1溢出

2、思考f[i][j]初始化为什么,求max的时候一般是-1e9,背包初始化为0是因为没负数,这里要考虑负数

#include<iostream>
#include<algorithm>
#include<climits>
using namespace std;
int main(){int n;//层数cin>>n;vector<vector<int>>v(n+1,vector<int>(n+1));
// 5
// 7
// 3 8
// 8 1 0 
// 2 7 4 4
// 4 5 2 6 5//f[j] = max(f[j],f[j-1])+v[i][j]vector<int>f(n+1,-INT_MAX);//−10000≤三角形中的整数≤10000// int f[n];//输出32575for(int i = 1;i<=n;i++){for(int j = 1;j<=i;j++){//<=icin>>v[i][j];}}f[1] = v[1][1];if(n == 1){cout<<f[1];return 0;}for(int i = 2;i<=n;i++){for(int j = i;j>=1;j--){f[j] = max(f[j],f[j-1])+v[i][j];}}int max= -INT_MAX;for(int i = 1;i<=n;i++){if(f[i]>max){max = f[i];}}cout<<max;
}

2.最长上升子序列

895. 最长上升子序列 - AcWing题库

问题://最后一步的问题,不一定是f[n-1]max

如果想输出最长子序列,可以记录每一个元素的前一个标号

// 第一行包含整数 N
// 第二行包含 N个整数,表示完整序列。
#include<iostream>
#include<algorithm>
using namespace std;
int main(){//最长单调序列长度int n;cin>>n;vector<int>s(n);for(int i = 0;i<n;i++){cin>>s[i];}//f[i]:s[i]last的max长度//f[i] = max(f[i],f[k]+1)(k<i && s[k]<s[i])vector<int>f(n,1);for(int i = 0;i<n;i++){for(int j = 0;j<i;j++){if( s[j]<s[i]){f[i] = max(f[i],f[j]+1);}}}//最后一步的问题,不一定是f[n-1]maxint max = 0;for(int i = 0;i<n;i++){if(f[i]>max){max = f[i];}}cout<<max;
}

3最长公共子序列

求既是 A的子序列又是 B 的子序列的字符串长度最长是多少。

卡住咯

f[i][j]:第一个序列的前i个字母和第2个序列的前j个字母组成的公共子序列max长度

f[i][j] = ?【求递推公式其实也是在不重【求max的时候f递推式划分的子集可以重复,】不漏划分集合】

考虑增加第i个字母和第j个字母f、公共子序列可能的变化和情况

公共子序列相比之前可能:不增加

f[i-1][j]公共子序列不一定是以B[j]结尾

http://www.xdnf.cn/news/54127.html

相关文章:

  • 网页的URL绝对路径和相对路径,以及各自的使用场景
  • 【Vulkan 入门系列】创建逻辑设备和图形、呈现队列,显示尺寸更改(三)
  • 错误: 找不到或无法加载主类 HelloWorld,cmd窗口,java命令,提示
  • PT站中的tracker
  • LangChain4j语言模型选型指南:主流模型能力全景对比
  • 生成式AI对话中提示词策略:明确问题、明确目标和提供背景信息是最有效的策略
  • 【CPU】中断即时性
  • leetcode(01)森林中的兔子
  • 机器学习(神经网络基础篇)——个人理解篇6(概念+代码)———参数优化篇
  • 模型上下文协议(MCP)详解
  • 【物理学】物理学——电机控制中常用的定则
  • AI 中的 CoT 是什么?一文详解思维链
  • select、poll、epoll实现多路复用IO并对比差异
  • C++类继承关键点总结
  • 模拟实现strcmp,strcpy,strlen,strcat,strstr
  • 类转换与强制类型转换详解
  • 双目视觉中的动态畸变矫正与跨视角信息融合
  • SmolVLM2: The Smollest Video Model Ever(五)
  • C与C++的区别
  • 656SJBH重金属音乐点歌系统
  • windows拷贝文件脚本
  • Java编程基础(第二篇:类的基本创建)
  • 基于尚硅谷FreeRTOS视频笔记——16—FreeRTOS的任务创建和删除
  • 电源芯片的关键性能指标与分析
  • netty中对TLS支持详解
  • 状态管理最佳实践:GetX框架深度应用
  • Tradingview日内交易策略分享-89%日内交易胜率
  • 【网工第6版】第4章 无线通信网
  • awk命令——功能强大的文本处理工具
  • adb启动没有成功响应解决方法