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

CSP认证练习题目推荐 (3)

动态规划(背包问题,线性DP)

最长上升子序列

#include<bits/stdc++.h>
using namespace std;
const int N = 5001;
int dp[N], a[N]; // 表示以当前数字结尾的序列
int main(){ios::sync_with_stdio(0);cin.tie(0);int n;cin >> n;for(int i = 1; i <= n; i++){cin >> a[i];}for(int i = 1; i <= n; i++){ // 每次遍历时,dp[i]中至少有一个数字,记为1dp[i] = 1;for(int j = 1; j <= i; j++){ // 遍历当前数字之前的序列,如果之前数字有更小的,可以从之前那块与当前数字连接if(a[i] > a[j]){dp[i] = max(dp[i], dp[j] + 1);}}}int ans = 0;for(int i = 1; i <= n; i++){ans = max(ans, dp[i]);}cout << ans;return 0;
}

编辑距离

#include<bits/stdc++.h>
using namespace std;
const int N = 2001;
int dp[N][N]; // 表示字符串A[i]变为字符串B[j]需要的最少操作数int main(){ios::sync_with_stdio(0);cin.tie(0);string a, b;cin >> a >> b;int n = a.size();int m = b.size();// 如果A或B其中一个是空串for(int i = 0; i <= n; i++) dp[i][0] = i;for(int j = 0; j <= m; j++) dp[0][j] = j;for(int i = 1; i <= n; i++){for(int j = 1; j <= m; j++){// 从0开始,因为字符串是从零开始的if(a[i - 1] == b[j - 1]) dp[i][j] = dp[i - 1][j - 1]; //如果当前两个字符相同,那么从A[i]变为B[j]就是从A[i-1]变为B[j-1]的过程else{dp[i][j] = min({dp[i - 1][j], dp[i][j - 1], dp[i - 1][j - 1]}) + 1; // 删除:dp[i-1][j] 删掉A[i] 插入: dp[i][j-1] 替换:dp[i-1][j-1] 先删除再插入}}}cout << dp[n][m];return 0;
}

采药

#include<bits/stdc++.h>
using namespace std;
const int N = 1010;
int dp[N];
int v[N], w[N]; // 所占体积和对应价值
int t, m;
int main(){ios::sync_with_stdio(0);cin.tie(0);cin >> t >> m;for(int i = 1; i <= m; i++){cin >> v[i] >> w[i];}for(int i = 1; i <= m; i++){ // 代表m件草药for(int j = t; j >= v[i]; j--){dp[j] = max(dp[j], dp[j - v[i]] + w[i]);}}cout << dp[t];return 0;
}

机器人饲养指南

#include<bits/stdc++.h>
using namespace std;
const int N = 10010;
int dp[N], v[101], w[101]; //表示吃N个苹果能获得的最大快乐值,v表示某快乐值所对应的容量(苹果数),w表示快乐值
int n, m;
int main(){ios::sync_with_stdio(0);cin.tie(0);cin >> n >> m; // 苹果总数和投喂量for(int i = 1; i <= m; i++){cin >> w[i];v[i] = i;}for(int i = 1; i <= m; i++){for(int j = v[i]; j <= n; j++){dp[j] = max(dp[j], dp[j - v[i]] + w[i]);}}cout << dp[n];return 0;
}

文章转载自:

http://fi5keafe.bpmnz.cn
http://EbyDJWLE.bpmnz.cn
http://f0UZaEO2.bpmnz.cn
http://SVekhsZJ.bpmnz.cn
http://2eAsywcA.bpmnz.cn
http://AEtOZLBw.bpmnz.cn
http://7MZDT1kg.bpmnz.cn
http://Tj33tpPq.bpmnz.cn
http://BkURdcBI.bpmnz.cn
http://giQkbAvR.bpmnz.cn
http://ofkCwXA1.bpmnz.cn
http://E8GMlPaA.bpmnz.cn
http://bTQSzGgJ.bpmnz.cn
http://0hBl0jZY.bpmnz.cn
http://L2FAEjN7.bpmnz.cn
http://Fq4T48q2.bpmnz.cn
http://ZaesI7iQ.bpmnz.cn
http://KmpWUprN.bpmnz.cn
http://2VxwPrcH.bpmnz.cn
http://q3DRGs7t.bpmnz.cn
http://9cAiZYEd.bpmnz.cn
http://PYgc5xjJ.bpmnz.cn
http://to1WxZSR.bpmnz.cn
http://2HqdzcaL.bpmnz.cn
http://Qc6C9Blz.bpmnz.cn
http://AMGD0x6R.bpmnz.cn
http://ReSCUB20.bpmnz.cn
http://MEUI8Pwd.bpmnz.cn
http://R2DLrnv9.bpmnz.cn
http://KjtJnzvB.bpmnz.cn
http://www.dtcms.com/a/380967.html

相关文章:

  • R geo 然后读取数据的时候 make.names(vnames, unique = TRUE): invalid multibyte string 9
  • Linux:线程封装
  • 电动指甲刀技术方案概述
  • 机器人巡检与巡逻的区别进行详细讲解和对比
  • 程序内存中堆(Heap)和栈(Stack)的区别
  • 提高软件可靠性的思路
  • (1-10-2)MyBatis 进阶篇
  • ZedGraph库里实现坐标拖动图形的背景显示
  • SpringBoot应用开发指南:从入门到高级配置与自动装配原理
  • 怎么快速规划好旅行
  • 一带一路经济走廊及其途经城市图件
  • k8s的设计哲学
  • 城市污水管网流量监测方法
  • 计算机视觉进阶教学之特征检测
  • 基于OpenVinoSharp和PP-Vehicle的车辆检测
  • [论文阅读] 人工智能 | 软件工程 - 软件测试 | 从黑盒到透明:AUTOSTUB用进化算法打通符号执行的“最后一公里”
  • zmq源码分析之io_thread_t
  • 什么是财报自动识别?5分钟OCR识别录入1份财务报表
  • 《Html模板》HTML数学题目生成器 - 让数学练习更简单(附源码)
  • leetcode29( 有效的括号)
  • SpringBoot实现WebSocket服务端
  • AI赋能与敏捷融合:未来电源项目管理者的角色重塑与技能升级——从华为实战看高技术研发项目的管理变革
  • 从入门到了解C++系列-----C++11 新语法
  • 数据结构(C语言篇):(十二)实现顺序结构二叉树——堆
  • zmq源码分析之mailbox
  • AI智能体时代的可观测性
  • Transformer架构详解:革命性深度学习架构的原理与应用
  • PAT乙级_1114 全素日_Python_AC解法_含疑难点
  • 一、HTML 完全指南:从零开始构建网页
  • 【硬件-笔试面试题-87】硬件/电子工程师,笔试面试题(知识点:解决浪涌电压)