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

骑车路线(DP)

题目描述

Time Limit: 1000 ms
Memory Limit: 256 mb

Tomislav最近发现自己的身材完全走样了,她走楼梯都变得很累。一天早上她起来以后,她决定恢复姣好的身材。她最喜欢的运动是骑自行车,因此她决定在本地的小山上做一次旅行。

她骑自行车的路线可以描述为N个数字的数列,每个数字表示每一段路地海拔高度。Tomislav最感兴趣的是最长的高度一直上升的子序列,她称这一段路为爬坡,Tomislav只想考虑这段爬坡的高度差(即开始和最后的数字的差距),而不是什么路程长度。

一段爬坡路被定义为至少两个连续的上升数列。例如,我们考虑如下路线数列12 3 5 7 10 6 1 11,这里有两个爬坡,第一个爬坡(3 5 7 10)的高度差是7,第二个爬坡的高度差是10(1 11)。

帮助Tomislav计算高度差最大的爬坡的高度差。

输入输出格式
输入描述:

多组测试数据输入。 第一行是一个正整数N (1<= N <= 1000), 描述了路线数列。 第二行有N个正整数,每个正整数Pi (1<= Pi <= 1000)表示相应路段的海拔高度。

输出描述:

所有爬坡中的最大高度差,如果路线数列里面没有爬坡,就输出0。

输入输出样例
输入样例#:

复制

5 1 2 1 4 6 6 10 8 8 6 4 3
输出样例#:

复制

5 0
题目来源
华东师范大学2021年机试题
#include<bits/stdc++.h> using namespace std; int dp[1005]; int dp1[10005]; int dp2[10005]; int t[10005]; // 重量/耗时 int v[10005]; // 价值 int s[1005]; int pre[100005]; int main(){ int n, w; string str1, str2; while(cin>>n){ for(int i = 0; i < n; i ++){ cin>>s[i]; dp[i] = 0; } int m = 0;//最大长度 int start;//开始的队头 int count = 0; int temp = 0; int i = 1; bool yes = false; while(i < n){ if(s[i] > s[i - 1]){ start = i -1; while(s[i] > s[i - 1]){ i ++; temp = i - 1; } int temp1 = s[temp] - s[start]; // cout<<s[temp]<<" "<<s[start]<<endl; if(temp1 > m){ m = temp1; } count ++; } i ++; }// if(count > 1){ cout<<m<<endl; } else{ cout<<"0"<<endl; } } }

最长连号

查看题解 查看答案

题目描述

Time Limit: 1000 ms
Memory Limit: 256 mb

输入n个正整数,(1<=n<=10000),要求输出最长的连号的长度。(连号指从小到大连续自然数)

输入输出格式
输入描述:

第一行,一个数n; 第二行,n个正整数,之间用空格隔开。

输出描述:

一个数,最长连号的个数。

输入输出样例
输入样例#:

复制

10 3 5 6 2 3 4 5 6 8 9
输出样例#:

复制

5
题目来源
中山大学机试题
#include<bits/stdc++.h> using namespace std; int dp[1005]; int dp1[10005]; int dp2[10005]; int t[10005]; // 重量/耗时 int v[10005]; // 价值 int s[1005]; int pre[100005]; int main(){ int n, w; string str1, str2; while(cin>>n){ for(int i = 0; i < n; i ++){ cin>>s[i]; } int temp = 0; int m = 1, sum = 1; for(int i = 1; i < n; i ++){ if(s[i] - s[i - 1] == 1){ m ++; } else{ m = 1; } if(m > sum){ sum = m; } } cout<<sum<<endl; } }

最长公共子序列LCS

查看题解 查看答案

题目描述

Time Limit: 1000 ms
Memory Limit: 256 mb

问题描述:输入2个子串, 输出这2个子串的最大公共子串
输入:
abcd acb abc
输出:
ab

输入输出格式
输入描述:

如题

输出描述:

如题

输入输出样例
输入样例#:

复制

acb abc

输出样例#:

复制

ab
题目来源
复旦大学机试题
#include<bits/stdc++.h> using namespace std; #define N 1005 int dp[N][N] = {0}; //int s1[N] = {0}; //int s2[N] = {0}; int main(){ int n; string s1, s2; while(cin >> s1 >> s2){ int n1 = s1.size(); int n2 = s2.size(); //肌肉记忆:多组输入必须擦黑板! memset(dp, 0, sizeof(dp)); s1 = ' ' + s1; s2 = ' ' + s2; for(int i = 1; i <= n1; i ++){ for(int j = 1; j <= n2; j ++){ if(s1[i] == s2[j]){ dp[i][j] = dp[i - 1][j - 1] + 1; } else{ dp[i][j] = max(dp[i - 1][j], dp[i][j - 1]); } } } string result = ""; int i = n1, j = n2; while(i > 0 && j > 0){ if(s1[i] == s2[j]){ result = s1[i] + result; i --; j --; } else if(dp[i - 1][j] > dp[i][j - 1]){ i --; } else { j--; } } cout<<result<<endl; } return 0; }
http://www.jsqmd.com/news/507373/

相关文章:

  • HTTP状态码项目常见问题解决方案
  • Unity UI (uGUI) 开源项目使用教程
  • 3步搭建免费字幕实时翻译系统:PotPlayer插件全攻略
  • 福建到菲律宾可靠的物流公司怎么选? - mypinpai
  • 自动驾驶中的‘定海神针’:深入浅出聊聊IMU与GNSS的紧组合到底怎么‘紧’
  • macOS Big Sur在OSX-KVM上的性能调优终极指南
  • Dify vs LangChain vs n8n:从零搭建企业级AI应用的实战选型指南(附真实案例)
  • 轻量级华硕硬件控制工具:G-Helper从问题诊断到深度优化指南
  • Zig容器编排:使用Kubernetes部署Zig应用的完整指南
  • DC-9靶场渗透实战:从SQL注入到SSH爆破的完整通关指南(附避坑技巧)
  • Qt + OpenCV图像视觉框架源码探秘
  • 解决OSX-KVM时间同步问题:NTP配置与硬件时钟校准终极指南 [特殊字符]
  • BGE-Large-ZH-V1.5中文语义嵌入模型实战指南
  • Terragrunt工作区:多环境隔离与管理终极指南
  • 解密Doris副本同步机制:Raft协议在分布式查询中的特殊优化
  • GitHub Linguist测试策略:确保语言识别准确性的完整指南
  • YOLOv8-Pose实战:从零构建实时人体姿态检测系统【项目全解析】
  • 如何为Rancher缓慢启动容器配置启动探针:完整指南
  • 基于PID控制的两轮差速小车 轨迹规划跟踪、航向角和距离仿真
  • GitHub Linguist与编辑器集成:VSCode插件开发实例
  • Apktool XML流解码:ResXmlPullStreamDecoder深度解析
  • 年底断舍离|大润发购物卡回收攻略,闲置变现金超简单 - 可可收
  • HackTricks终极攻略:网络安全攻防策略完全指南
  • 《中文Python穿云箭量化平台二次开发技术05》股票K线数据可视化与自定义指标分析实战【动态行情监控工具】
  • 2025阴阳师智能辅助工具:技术革新与效率突破
  • 大电流、高振动、强高温?一文看懂冶金电炉补偿器的核心技术与厂家匹配 - 深度智识库
  • Qt无边框窗口如何“骗”过Win11?手把手教你实现Snap Layout悬浮弹窗(附完整源码)
  • ANFIS自适应模糊神经网络:从理论到实践的智能建模指南
  • Scarab模组管理器:空洞骑士模组安装的终极指南
  • Apktool提供者属性测试:全面解析ProviderAttributeTest组件功能