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

基础动态规划题目基础动态规划题目

目录

题目1: P1216 [USACO1.5] [IOI1994]数字三角形 Number Triangles

 代码示例:

题目2: Common Subsequence

代码示例

题目3 :最长上升子序列

最长不下降子序列

最长上升子序列oj答案

题目1: P1216 [USACO1.5] [IOI1994]数字三角形 Number Triangles

P1216 [USACO1.5] [IOI1994]数字三角形 Number Triangles - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)icon-default.png?t=N7T8https://www.luogu.com.cn/problem/P1216

 代码示例:

// c++ 代码示例
#include <algorithm>
#include <iostream>using namespace std ;int n,a[1005][1005],f[1005][1005] ;int dfs(int x, int y)
{if (x == n) return a[x][y] ;if (f[x][y] != -1) return f[x][y] ;return f[x][y] = max(dfs(x + 1, y), dfs(x + 1, y + 1)) + a[x][y] ;
}int main()
{int n ;cin >> n ;for (int i = 1 ; i <= n ; i++){for (int j = 1 ; j <= i ; j++){cin >> a[i][j] ;}}for (int i = 1 ; i <= n ; i++){for (int j = 1 ; j <= i ; j++){f[i][j] = -1 ;}}cout << dfs(1, 1) ;return 0 ;
}
// c++ 代码示例#include <algorithm>
#include <iostream>
using namespace std ;long long n, a[1005][1005] ;
int main()
{cin >> n ;for (int i = 1 ; i <= n ; i++){for (int j = 1 ; j <= i ; j++){cin >> a[i][j] ;}}for (int i = n ; i >= 1 ; i--){for (int j = 1 ; j <= i ; j++){a[i][j] = a[i][j] + max(a[i + 1][j], a[i + 1][j + 1]);        }}cout << a[1][1] ;return 0 ;}

 

// c++ 代码示例#include <algorithm>
#include <iostream>
#include <cstdlib>
#include <cstring>
#include <cstdio>
#include <string>
using namespace std;#define rint register int
inline void read(int &x)
{x = 0;int w = 1;char ch = getchar();while (!isdigit(ch) && ch != '-'){ch = getchar();}if (ch == '-'){w = -1;ch = getchar();}while (isdigit(ch)){x = (x << 3) + (x << 1) + (ch ^ '0');ch = getchar();}x = x * w;
}const int maxn = 1000 + 10;int n, a[maxn][maxn], ans;int main()
{read(n);for (rint i = 1; i <= n; i++){for (rint j = 1; j <= i; j++){read(a[i][j]);if (i == 1 && j == 1){// The top of the trianglecontinue;}if (j == 1){// Left boundarya[i][j] += a[i - 1][j];}else if (j == i){// Right boundarya[i][j] += a[i - 1][j - 1];}else{// Middle elementsa[i][j] += max(a[i - 1][j - 1], a[i - 1][j]);}ans = max(ans, a[i][j]);}}cout << ans << endl;return 0;
}

题目2: Common Subsequence

Common Subsequence - HDU 1159 - Virtual Judge (vjudge.net)icon-default.png?t=N7T8https://vjudge.net/problem/HDU-1159

代码示例

// c++ 代码示例
int a[MAXN], b[MAXN], f[MAXN][MAXN] ;int dp()
{for (int i = 1 ; i <= n ; i++){for (int j = 1 ; j <= m ; j++){if (a[i - 1] == b[j - 1]){f[i][j] = f[i - 1][j - 1] + 1 ;}else{f[i][j] = std::max(f[i - 1][j], f[i][j - 1]) ;}}}return f[n][m] ;
}
// c++ 代码示例#include <cmath>
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <algorithm>using namespace std;char a[1001], b[1001];
int dp[1001][1001], len1, len2;void lcs(int i,int j)
{for(i=1; i<=len1; i++){for(j=1; j<=len2; j++){if(a[i-1] == b[j-1])dp[i][j] = dp[i-1][j-1] + 1;else if(dp[i-1][j] > dp[i][j-1])dp[i][j] = dp[i-1][j];elsedp[i][j] = dp[i][j-1];}}
}int main()
{while(~scanf(" %s",a)){scanf(" %s", b);memset(dp, 0, sizeof(dp));len1 = strlen(a);len2 = strlen(b);lcs(len1, len2);printf("%d\n", dp[len1][len2]);}return 0;
}

题目3 :最长上升子序列

信息学奥赛一本通(C++版)在线评测系统 (ssoier.cn)icon-default.png?t=N7T8http://ybt.ssoier.cn:8088/problem_show.php?pid=1281

最长不下降子序列

//c++代码示例
# include <iostream>
# include <cstdio>
using namespace std ;
int n ;
int a[1001] ;
int f[1001] ;
int mx = -1 ;
int main()
{scanf("%d", &n) ;for (int i = 1 ; i <= n ; i++){scanf("%d", &a[i]) ;f[i] = 1 ;}for (int i = 2 ; i <= n ; i++){for (int j = i - 1 ; j >= 1 ; j--){if (a[i] >= a[j]){f[i] = max(f[i], f[j] + 1) ;}}}for (int i = 1 ; i <= n ; i++){mx = max(mx, f[i]) ;}printf("%d", mx) ;return 0 ;}
//c++代码示例
# include <iostream>
# include <cstdio>
using namespace std ;
int n ;
int a[1001] ;
int f[1001] ;
int mx = -1 ;
int main()
{scanf("%d", &n) ;for (int i = 1 ; i <= n ; i++){scanf("%d", &a[i]) ;f[i] = 1 ;}for (int i = n - 1 ; i >= 1 ; i--){for (int j = i + 1 ; j <= n ; j++){if (a[i] <= a[j]){f[i] = max(f[i], f[j] + 1) ;}}}for (int i = 1 ; i <= n ; i++){mx = max(mx, f[i]) ;}printf("%d", mx) ;return 0 ;}

最长上升子序列oj答案

//c++代码示例
# include <iostream>
# include <cstdio>
using namespace std ;
int n ;
int a[1001] ;
int f[1001] ;
int mx = -1 ;
int main()
{scanf("%d", &n) ;for (int i = 1 ; i <= n ; i++){scanf("%d", &a[i]) ;f[i] = 1 ;}for (int i = n - 1 ; i >= 1 ; i--){for (int j = i + 1 ; j <= n ; j++){if (a[i] < a[j]){f[i] = max(f[i], f[j] + 1) ;}}}for (int i = 1 ; i <= n ; i++){mx = max(mx, f[i]) ;}printf("%d", mx) ;return 0 ;}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Java 快速入门学习 -- Day 2
  • 【持续集成_06课_Jenkins高级pipeline应用】
  • Java常用的API_02(正则表达式、爬虫)
  • 【教学类-67-02】20240716毛毛虫ABB排序
  • 探索十大最佳产品设计软件:软件排行榜揭晓
  • Lora模型训练的参数-学习笔记
  • 【学习笔记】无人机(UAV)在3GPP系统中的增强支持(九)-无人机服务区分离
  • 防火墙-NAT策略和智能选路
  • 新手教学系列——简单的服务配置项集中管理
  • python取色器
  • Pycharm 导入 conda 环境
  • 开发指南047-前端模块版本
  • NineData全面支持PostgreSQL可视化表结构设计
  • 无人机监测的必要性及方法
  • ES证书过期替换方案
  • 【108天】Java——《Head First Java》笔记(第1-4章)
  • 【跃迁之路】【585天】程序员高效学习方法论探索系列(实验阶段342-2018.09.13)...
  • 30秒的PHP代码片段(1)数组 - Array
  • 4个实用的微服务测试策略
  • Android Volley源码解析
  • CSS盒模型深入
  • extract-text-webpack-plugin用法
  • HTTP那些事
  • JDK 6和JDK 7中的substring()方法
  • JWT究竟是什么呢?
  • Linux下的乱码问题
  • MYSQL 的 IF 函数
  • PHP的类修饰符与访问修饰符
  • SegmentFault 技术周刊 Vol.27 - Git 学习宝典:程序员走江湖必备
  • 成为一名优秀的Developer的书单
  • - 概述 - 《设计模式(极简c++版)》
  • 关于for循环的简单归纳
  • 聚类分析——Kmeans
  • 前端工程化(Gulp、Webpack)-webpack
  • 山寨一个 Promise
  • ​zookeeper集群配置与启动
  • # 深度解析 Socket 与 WebSocket:原理、区别与应用
  • #{}和${}的区别是什么 -- java面试
  • #常见电池型号介绍 常见电池尺寸是多少【详解】
  • (26)4.7 字符函数和字符串函数
  • (4)事件处理——(6)给.ready()回调函数传递一个参数(Passing an argument to the .ready() callback)...
  • (Matalb分类预测)GA-BP遗传算法优化BP神经网络的多维分类预测
  • (pojstep1.1.2)2654(直叙式模拟)
  • (附源码)php投票系统 毕业设计 121500
  • (附源码)小程序 交通违法举报系统 毕业设计 242045
  • (免费领源码)python#django#mysql校园校园宿舍管理系统84831-计算机毕业设计项目选题推荐
  • (贪心) LeetCode 45. 跳跃游戏 II
  • (转载)(官方)UE4--图像编程----着色器开发
  • (转载)hibernate缓存
  • ****Linux下Mysql的安装和配置
  • .Net Core 笔试1
  • .net core 外观者设计模式 实现,多种支付选择
  • .net dataexcel 脚本公式 函数源码
  • .NET 反射的使用
  • .NET 使用 JustAssembly 比较两个不同版本程序集的 API 变化