算法问题实战策略 JLIS 动态规划
地址 https://algospot.com/judge/problem/read/JLIS
先上代码,
本题很明显的就是最长递增子序列的二维版本。
所以我毫不犹豫的就设置了dp[i][j]
但是在变量意义上犯了错误
我开始设想的是变量的意义是i j代表两个数组中元素最大的那个作为结尾的递增序列长度,转移方程老想一次长度可以加2。
事实是错误的,一次只增加长度1,分两次计算后,再来去最大值作为答案。
#include <iostream> #include <algorithm> #include <memory.h> #include <limits.h> using namespace std; /* 4 3 3 1 2 4 3 4 7 3 3 1 2 3 4 5 6 5 3 10 20 30 1 2 10 20 30 5 5 2 9 9 9 1 5 7 3 6 3 */ int loop; const int N = 300; int A[N]; int B[N]; int dp[N][N]; int ans = INT_MIN; void Check(int x, int y) { for (int i = x; i >= 0; i--) { int maxLen = max(A[i], B[y]); if (A[x + 1] > maxLen) { dp[x + 1][y] = max(dp[x + 1][y], dp[i][y] + 1); ans = max(ans, dp[x + 1][y]); } } for (int i = y; i >= 0; i--) { int maxLen = max(A[x], B[i]); if (B[y + 1] > maxLen) { dp[x][y + 1] = max(dp[x][y + 1], dp[x][i] + 1); ans = max(ans, dp[x][y+1]); } } } int main() { cin >> loop; while (loop--) { int Alen, Blen; cin >> Alen >> Blen; memset(A, 0, sizeof A); memset(B, 0, sizeof B); memset(dp, 0, sizeof(dp)); ans = INT_MIN; A[0] = B[0] = INT_MIN; for (int i = 1; i <= Alen; i++) { cin >> A[i]; } for (int i = 1; i <= Blen; i++) { cin >> B[i]; } for (int i = 0; i <= Alen; i++) { for (int j = 0; j <= Blen; j++) { Check(i, j); } } cout << ans << endl; } return 0; }
作 者: itdef
欢迎转帖 请保持文本完整并注明出处
技术博客 http://www.cnblogs.com/itdef/
B站算法视频题解
https://space.bilibili.com/18508846
qq 151435887
gitee https://gitee.com/def/
欢迎c c++ 算法爱好者 windows驱动爱好者 服务器程序员沟通交流
如果觉得不错,欢迎点赞,你的鼓励就是我的动力
欢迎转帖 请保持文本完整并注明出处
技术博客 http://www.cnblogs.com/itdef/
B站算法视频题解
https://space.bilibili.com/18508846
qq 151435887
gitee https://gitee.com/def/
欢迎c c++ 算法爱好者 windows驱动爱好者 服务器程序员沟通交流
如果觉得不错,欢迎点赞,你的鼓励就是我的动力


【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话
2018-09-25 分布式协议学习笔记(三) Raft 选举自编写代码练习
2017-09-25 PHP网站记录