dp 18 滑雪

news/2024/10/29 7:14:55/

文章目录

      • dp 18 滑雪
        • 题目描述
        • 输入描述:
        • 输出描述
        • 思路
        • 代码

dp 18 滑雪

题目描述

给定一个 n × m 的矩阵, 给定一个n \times m的矩阵, 给定一个n×m的矩阵,
矩阵中的数字表示滑雪场各个区域的高度,你可以选择从任意一个区域出发,并滑向任意一个周边的高度严格更低的区域(周边的定义是上下左右相邻的区域)。请问整个滑雪场中最长的滑道有多长?(滑道的定义是从一个点出发的一条高度递减的路线)。

(本题和矩阵最长递增路径类似,该题是当年NOIP的一道经典题)
数据范围: 1 ≤ n , m ≤ 100 ,矩阵中的数字满足 1 ≤ v a l ≤ 1000 数据范围: 1 \le n,m \le 100 ,矩阵中的数字满足 1 \le val \le 1000 数据范围:1n,m100,矩阵中的数字满足1val1000

输入描述:

第一行输入两个正整数 n 和 m 表示矩阵的长宽。
后续 n 行输入中每行有 m 个正整数,表示矩阵的各个元素大小。

输出描述

输出最长的路线

输入样例
5 5
1 2 3 4 5
16 17 18 19 6
15 24 25 20 7
14 23 22 21 8
13 12 11 10 9
254 4
13 12 11 10
14 3 4 9
15 2 5 8
16 1 6 7
164 4
9 8 7 10
4 5 6 10
3 2 1 10
10 10 10 10
9

思路

此题为记忆化搜索的题目。类似于之前写过的打家劫舍3,整体利用dfs去得到以当前点为出发点,可达到的最长序列的长度。分别向四个方向遍历,计算值就行。由于以当前点为出发点,可达到的最长序列的长度其实是确定的。所以我们可以记录一下每次的遍历结果,在下一次要进行遍历的时候,直接取用就行。

代码

#include <bits/stdc++.h>
using namespace std;int a[101][101];
int n, m;int dp[101][101];int dir[4][2] = {{0,-1},{0,1},{1,0},{-1,0}};void dfs(int x, int y) {int x1, y1;for(int i = 0; i < 4; ++i) {x1 = dir[i][0] + x;y1 = dir[i][1] + y;if(x1 >= 0 && x1 < n && y1 >= 0 && y1 < m) {if(a[x1][y1] < a[x][y]) { //可以到达dfs(x1,y1);dp[x][y] = max(dp[x][y], 1 + dp[x1][y1]);//选择最长的}}}
}int main() {scanf("%d %d", &n, &m);for(int i = 0; i < n; ++i) {for(int j = 0; j < m; ++j) {scanf("%d", &a[i][j]);}}int ans = -1;//答案for(int i = 0; i < n; ++i) {for(int j = 0; j < m; ++j) {dfs(i,j);ans = max(ans, dp[i][j]);//每次记录结果}}printf("%d", ans+1);//由于长度没有算上初始点 这里再算上return  0;
}

http://www.ppmy.cn/news/485896.html

相关文章

Visio2013绘制任意曲线

曲线上蓝色的‘弯曲点‘&#xff0c;随着拉伸曲线&#xff0c;它自己会增减&#xff0c;这里要和’连接点‘区分开&#xff0c;连接点是用来连接别的图形的。

D80拍摄人像的基本招式

除了构图&#xff0c;人像摄影较难的就是曝光和色彩&#xff0c;今天看了几招&#xff0c;分享如下。1. 景深 A模式&#xff1a; 大光圈&#xff1a;减少景深&#xff0c;对焦范围窄 小光圈&#xff1a;增加景深&#xff0c;对焦范围广2. 长焦 将前后背景柔化&#xf…

nand flash 介绍

flash名称由来 Flash的擦除操作是以block块为单位的&#xff0c;与此相对应的是其他很多存储设备&#xff0c;是以bit位为最小读取/写入的单位&#xff0c;Flash是一次性地擦除整个块&#xff1a;在发送一个擦除命令后&#xff0c;一次性地将一个block&#xff0c;常见的块的大…

TestNG官方文档中文版

TestNG官方文档中文版(1) -介绍 T e s t NG 的 官 方 文 档 请 见 :http://testng.org/doc/documentation-main.html 1 介绍 T e s t N G 是 一 个 设 计 用 来 简 化 广 泛 的 测 试 需 求 的 测 试 框 架 &#xff0c; 从 单 元 测 试 (隔 离测试- 个类)到集成测试(测试由有…

光伏电站并网雷电防护措施探讨 安科瑞 许敏

摘要: 本文指出了雷击对并网系统光伏电站的主要危害形式及所对应的雷电防护措施。依据相关的防雷及电气接地规范&#xff0c;针对并网系统光伏电站提出了防雷设计方案并做了详细的阐述。在光伏电站的防雷设计中&#xff0c;应考虑雷电会通过何种形式对哪些设施造成损害&#xf…

性能测试压测工具都有哪些?怎么选你知道吗?

目录 普遍存在的问题 工具选型和推荐 软件测试而非测试工具 总结&#xff1a; 普遍存在的问题 聊压测工具之前&#xff0c;先聊一下我面试候选人时问的问题以及在技术交流群经常遇到的一个情况。 面试候选人特别是性能测试岗位&#xff0c;我一般很少问测试工具的问题&…

我心中的编程语言之王:Python

我心中的编程语言之王&#xff1a;Python 在当今日益发展的信息技术领域&#xff0c;编程语言的地位愈发重要。它们是构建现代软件和应用的基石&#xff0c;也是实现科技进步的关键工具。在众多编程语言中&#xff0c;Python 以其简单、易用、高效等诸多优点&#xff0c;成为了…

Git 多账号多仓库配置 SSH

前言 在我们使用 Git 中&#xff0c;有时候会遇到多账号多仓库的情况&#xff0c;比如公司的 GitLab 和 GitHub&#xff0c;以及自己的 GitHub&#xff0c;这时候我们就需要配置多个 SSH 密钥来区分不同的账号和仓库 生成 SSH 密钥 根据你注册仓库的邮箱生成 SSH 密钥&#…