LintCode 778 给定一个m×n的非负矩阵代表一个大洲,矩阵的每个单元格的值代表此处的地形高度,矩阵的左边缘和上边缘是“太平洋”,下边缘和右边缘是“大西洋”。

本文主要是介绍LintCode 778 给定一个m×n的非负矩阵代表一个大洲,矩阵的每个单元格的值代表此处的地形高度,矩阵的左边缘和上边缘是“太平洋”,下边缘和右边缘是“大西洋”。,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、遍历每个点,每个点来一次dfs,结果超时

class Solution {
public:/*** @param matrix: the given matrix* @return: The list of grid coordinates*/vector<vector<int>> globalans;vector<vector<int>> pacificAtlantic(vector<vector<int>> &matrix) {// write your code hereint row=matrix.size();int col=matrix[0].size();vector<vector<int>> matrixans(row,vector<int>(col));for(int i=0;i<row;i++){for(int j=0;j<col;j++){vector<vector<bool>> visited(row,vector<bool> (col));matrixans[i][j]=dfs(matrix,visited,matrixans,i,j);cout<< matrixans[i][j]<<" ";if(matrixans[i][j]==3){vector<int> temp;temp.push_back(i);temp.push_back(j);globalans.push_back(temp);}}cout<<endl;}return globalans;}int dfs(vector<vector<int>> &matrix,vector<vector<bool>> &visited,vector<vector<int>> &matrixans,int x,int y){int row=matrix.size();int col=matrix[0].size();int ans=0;visited[x][y]=true;if((x==0&&y==col-1)||(x==row-1&&y==0)){ans=3;return ans;}else if(x==0||y==0){ans=1;}else if(x==row-1||y==col-1){ans=2;}vector<vector<int>> move={{0,1},{1,0},{0,-1},{-1,0}};for(int i=0;i<4;i++){int pos_x=x+move[i][0];int pos_y=y+move[i][1];if(pos_x>=0&&pos_x<row&&pos_y>=0&&pos_y<col&&visited[pos_x][pos_y]==false&&matrix[x][y]>=matrix[pos_x][pos_y]){int temp;if(matrixans[pos_x][pos_y]!=0) temp=matrixans[pos_x][pos_y];else temp=dfs(matrix,visited,matrixans,pos_x,pos_y);if(ans==0) ans=temp;else if(temp!=0&&ans!=temp) ans=3; }}return ans;}
};

二、从边缘进行dfs,判断哪些点可达

class Solution {
public:/*** @param matrix: the given matrix* @return: The list of grid coordinates*/vector<vector<int>> globalans;int row;int col;vector<vector<int>> move={{0,1},{1,0},{-1,0},{0,-1}};vector<vector<int>> pacificAtlantic(vector<vector<int>> &matrix) {// write your code hererow=matrix.size();col=matrix[0].size();vector<vector<bool>> Pacific(row,vector<bool>(col));vector<vector<bool>> Atlantic(row,vector<bool>(col));for(int i=0;i<row;i++){dfs(matrix,Pacific,0,i,0);dfs(matrix,Atlantic,0,i,col-1);}for(int i=0;i<col;i++){dfs(matrix,Pacific,0,0,i);dfs(matrix,Atlantic,0,row-1,i);}for(int i=0;i<row;i++){for(int j=0;j<col;j++){if(Pacific[i][j]&&Atlantic[i][j]){vector<int> temp;temp.push_back(i);temp.push_back(j);globalans.push_back(temp);}}}return globalans;}void dfs(vector<vector<int>> &matrix,vector<vector<bool>> &visited,int height,int x,int y){if(x<0||x>=row||y<0||y>=col||matrix[x][y]<height||visited[x][y]){return;}visited[x][y]=true;for(int i=0;i<4;i++){dfs(matrix,visited,matrix[x][y],x+move[i][0],y+move[i][1]);}}};

 

这篇关于LintCode 778 给定一个m×n的非负矩阵代表一个大洲,矩阵的每个单元格的值代表此处的地形高度,矩阵的左边缘和上边缘是“太平洋”,下边缘和右边缘是“大西洋”。的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1095214

相关文章

hdu 4565 推倒公式+矩阵快速幂

题意 求下式的值: Sn=⌈ (a+b√)n⌉%m S_n = \lceil\ (a + \sqrt{b}) ^ n \rceil\% m 其中: 0<a,m<215 0< a, m < 2^{15} 0<b,n<231 0 < b, n < 2^{31} (a−1)2<b<a2 (a-1)^2< b < a^2 解析 令: An=(a+b√)n A_n = (a +

hdu 6198 dfs枚举找规律+矩阵乘法

number number number Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Problem Description We define a sequence  F : ⋅   F0=0,F1=1 ; ⋅   Fn=Fn

音视频入门基础:WAV专题(10)——FFmpeg源码中计算WAV音频文件每个packet的pts、dts的实现

一、引言 从文章《音视频入门基础:WAV专题(6)——通过FFprobe显示WAV音频文件每个数据包的信息》中我们可以知道,通过FFprobe命令可以打印WAV音频文件每个packet(也称为数据包或多媒体包)的信息,这些信息包含该packet的pts、dts: 打印出来的“pts”实际是AVPacket结构体中的成员变量pts,是以AVStream->time_base为单位的显

Weex入门教程之4,获取当前全局环境变量和配置信息(屏幕高度、宽度等)

$getConfig() 获取当前全局环境变量和配置信息。 Returns: config (object): 配置对象;bundleUrl (string): bundle 的 url;debug (boolean): 是否是调试模式;env (object): 环境对象; weexVersion (string): Weex sdk 版本;appName (string): 应用名字;

线性代数|机器学习-P35距离矩阵和普鲁克问题

文章目录 1. 距离矩阵2. 正交普鲁克问题3. 实例说明 1. 距离矩阵 假设有三个点 x 1 , x 2 , x 3 x_1,x_2,x_3 x1​,x2​,x3​,三个点距离如下: ∣ ∣ x 1 − x 2 ∣ ∣ 2 = 1 , ∣ ∣ x 2 − x 3 ∣ ∣ 2 = 1 , ∣ ∣ x 1 − x 3 ∣ ∣ 2 = 6 \begin{equation} ||x

如何在Excel中根据单元格内容作MSnbsp;…

上篇文章,我们介绍了INDEX+SMALL+IF+ROW的数组公式组合,也就是说只要在IF中通过条件的构造,基本上就可以想提取什么条件的数据都可以,数据查询肯定得心应手。 但是,我们一起强调函数公式不是万能的,尤其是数组公式在海量数据面前,既是软肋也是硬伤,而且构造这个函数组合还需要你要具备或者能理解简单数组公式逻辑,对于在函数公式方面没有深究的人,自然是一头雾水。当然,就像“数据透视表”一样,

jqgrid设置单元格可编辑

1 在单元格的属性列设置为editable。 2 点击编辑按钮的时候,触发某一行设置为edit的状态。 jQuery("#rowed4").jqGrid({url:'server.php?q=2',datatype: "json",colNames:['Inv No','Date', 'Client', 'Amount','Tax','Total','Notes'],colModel

【线性代数】正定矩阵,二次型函数

本文主要介绍正定矩阵,二次型函数,及其相关的解析证明过程和各个过程的可视化几何解释(深蓝色字体)。 非常喜欢清华大学张颢老师说过的一段话:如果你不能用可视化的方式看到事情的结果,那么你就很难对这个事情有认知,认知就是直觉,解析的东西可以让你理解,但未必能让你形成直觉,因为他太反直觉了。 正定矩阵 定义 给定一个大小为 n×n 的实对称矩阵 A ,若对于任意长度为 n 的非零向量 ,有 恒成

2024年AI芯片峰会——边缘端侧AI芯片专场

概述 正文 存算一体,解锁大模型的边端侧潜力——信晓旭 当下AI芯片的亟需解决的问题 解决内存墙问题的路径 产品 面向大模型的国产工艺边缘AI芯片创新与展望——李爱军 端侧AI应用“芯”机遇NPU加速终端算力升级——杨磊 边缘端的大模型参数量基本小于100B AI OS:AI接口直接调用AI模型完成任务 具身智能的大脑芯片 大模

240907-Gradio插入Mermaid流程图并自适应浏览器高度

A. 最终效果 B. 示例代码 import gradio as grmermaid_code = """<iframe srcdoc='<!DOCTYPE html><html><head><meta charset="utf-8" /><meta name="viewport" content="width=device-width" /><title>My static Spa