ACM 动态规划题 -找最多可能浏览的景点数
创始人
2024-03-08 21:54:16

题目描述

        五一到了,ACM队组织大家去登山观光,队员们发现山上一共有N个景点,并且决定按照顺序来浏览这些景点,即每次所浏览景点的编号都要大于前一个浏览景点的编号。
        同时队员们还有另一个登山习惯,就是不连续浏览海拔相同的两个景点,并且一旦开始下山,就不再向上走了。
        队员们希望在满足上面条件的同时,尽可能多的浏览景点,你能帮他们找出最多可能浏览的景点数么?

思路

        用两个数组分别求从左边的最长上升和从右边的最长上升,最后再枚举一边就行了。

程序设计

代码结构:

导入万能头文件“”#include “”并使用用标准命名空间。

定义三个int型的数组,分别是

 h[N]:每个景点的高度

 g[N]:正向最长上升子序列

 f[N]:反向最长上升子序列

main函数首先要按照ACM的标准输入方法输入“景点个数”(n)和“每个景点的海拔高度”(h[i])。

通过对所有景点海拔的打印,来确认输入是正确的。

遍历从第1个景点到第n个景点(i自增的for循环),依次计算每个景点的正向最大上升子序列(j自增的for循环)。

遍历从第n个景点到第1个景点(i自减的for循环),依次计算每个景点的反向最大上升子序列(j自减的for循环)。

遍历从第1个景点到第n个景点,找到 f[i] + g[i] - 1的最大值,这个最大值就是我们要求得结果。

代码原文

#include 
using namespace std;
const int N = 1010;
int h[N], g[N], f[N];
int main()
{int n;scanf("%d", &n);for(int i = 1; i <= n; i ++) scanf("%d", &h[i]);//打印输入所有景点的海拔for(int i = 1; i <= n; i ++) printf("the %d th sight,height is %d\n",i,h[i]);//正向最长上升子序列for(int i = 1; i <= n; i ++){f[i] = 1;for(int j = 1; j < i; j ++){if(h[i] > h[j]){f[i] = max(f[i], f[j] + 1);}}}//反向最长上升子序列for(int i = n; i; i --){g[i] = 1;for(int j = n; j > i; j --){if(h[i] > h[j]){g[i] = max(g[i], g[j] + 1);}}}int res = 0;for(int i = 1; i <= n; i ++){res = max(res, f[i] + g[i] - 1);}printf("Result is %d", res);return 0;
}

代码自测

C:\Users\zhangyy\CLionProjects\Ctest\cmake-build-debug\Ctest.exe
5
11 22 12 33 22 11
the 1 th sight,height is 11
the 2 th sight,height is 22
the 3 th sight,height is 12
the 4 th sight,height is 33
the 5 th sight,height is 22
Result is 4
Process finished with exit code 0

自测输入了5个山峰的高度,根据计算结果,1,2,4,5景点依次浏览是符合题目要求的最优解。

总结

ICPC-ACM题目类型一共有16个类型:

动态规划 · Dynamic Programming
贪心算法 · Greedy
穷举搜索 · Complete
漫水填充 · Flood Fill
最短路径 · Shortest Path
回朔搜索技术 · Recarsive Search Techniques
最小生成树 · Minimum Spanning Tree
背包问题 · Knapsack
计算几何学 · Computational Geometry
网络流 · Network Flow
欧拉回路 · Eulerian Path
凸包问题 · Two-Pimensoinal Convex Hull
大数问题 · Bignums
启发式搜索 · Hearistic Search
近似搜索 · Approximate Search
杂题 · Ad Hoc Problems

本博客做了一道动态规划的简单题。

相关内容

热门资讯

埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...