1559. 二維網格圖中探測環

1559. 二維網格圖中探測環

給你一個二維字符網格數組 grid ,大小為 m x n ,你需要檢查 grid 中是否存在 相同值 形成的環。

一個環是一條開始和結束于同一個格子的長度 大于等于 4 的路徑。對于一個給定的格子,你可以移動到它上、下、左、右四個方向相鄰的格子之一,可以移動的前提是這兩個格子有 相同的值 。

同時,你也不能回到上一次移動時所在的格子。比方說,環 (1, 1) -> (1, 2) -> (1, 1) 是不合法的,因為從 (1, 2) 移動到 (1, 1) 回到了上一次移動時的格子。

如果 grid 中有相同值形成的環,請你返回 true ,否則返回 false 。

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

解題代碼如下:
主要還是深度優先遍歷,然后我們需要探討是不是在遍歷過程中,碰到之前遍歷過的結點。如果碰到了說明出現了環。

int judez;
void dfs(char** grid,int n,int m, int now_r,int now_c,int **judge_search,char now_ch,int init_r,int init_c,int count,int fx,int fy){int direciton[4][2]={{-1,0},{1,0},{0,-1},{0,1}};for( int i=0;i<4;i++){int noe_r=now_r+direciton[(i+count)%4][0];int noe_c=now_c+direciton[(i+count)%4][1];if(noe_r==init_r&&noe_c==init_c&&count>=3){judez=1;}if(0<=noe_r&&noe_r<n&&0<=noe_c&&noe_c<m&&noe_r!=fx&&noe_c!=fy&&grid[noe_r][noe_c]==now_ch&&judge_search[noe_r][noe_c]==0){judez=1;break;}if(0<=noe_r&&noe_r<n&&0<=noe_c&&noe_c<m&&judge_search[noe_r][noe_c]==1&&grid[noe_r][noe_c]==now_ch){judge_search[noe_r][noe_c]=0;if(judez==0)dfs(grid, n, m,  noe_r, noe_c, judge_search, now_ch, init_r, init_c,count+1, now_r, now_c);}}}bool containsCycle(char** grid, int gridSize, int* gridColSize){int n=gridSize;int m=gridColSize[0];int **judge_search=(int **)malloc(sizeof(int *)*n);for(int i=0;i<n;i++){judge_search[i]=(int *)malloc(sizeof(int )*m);}for(int i=0;i<n;i++){for(int j=0;j<m;j++){judge_search[i][j]=1;}}
//     for(int i=0;i<n;i++){
//         for(int j=0;j<m;j++){
// printf("%d ",judge_search[i][j]);        
// }
//     }judez=0;for(int i=0;i<n;i++){for(int j=0;j<m;j++){if(judez==1){break;}if( judge_search[i][j]==1){judge_search[i][j]=0;dfs(grid, n, m, i, j, judge_search, grid[i][j], i, j,0,-1,-1);}}}
if(judez==1){return true;}
return false;}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/44690.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/44690.shtml
英文地址,請注明出處:http://en.pswp.cn/web/44690.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【Qt 初識】QPushButton 的詳解以及 Qt 中的坐標

文章目錄 1. Qt 中的信號槽機制 &#x1f34e;2. 通過圖形化界面的方式實現 &#x1f34e;3. 通過純代碼的方式實現按鈕版的HelloWorld &#x1f34e;4. 設置坐標 &#x1f34e; 1. Qt 中的信號槽機制 &#x1f34e; 》&#x1f427; 本質就是給按鈕的點擊操作&#xff0c;關聯…

C++之復合資料型態 第一部(參考 列舉 指標)

復合資料型態(compound type) 是由其他資料型態(data type) 定義出來的型態&#xff0c; C 中的復合資料型態包括參考(reference) 、列舉(enumeration) 、陣列(array) 、指標(pointer ) 、結構(structure) 及聯合(union) 。 參考 參考是變數(variable) 的別名(alias) &#x…

GuLi商城-商品服務-API-品牌管理-OSS獲取服務端簽名(續)

如何進行服務端簽名直傳_對象存儲(OSS)-阿里云幫助中心 gulimall-third-party服務的代碼: package com.nanjing.gulimall.thirdparty.controller;import com.aliyun.oss.OSS; import com.aliyun.oss.OSSClientBuilder; import com.aliyun.oss.common.utils.BinaryUtil; impor…

Linux開發:Fuse介紹

Fuse(filesystem in userspace),是一個用戶空間的文件系統。通過fuse內核模塊的支持&#xff0c;開發者只需要根據fuse提供的接口實現具體的文件操作時所對應的回調函數&#xff0c;就可以實現一個文件系統。由于其主要實現代碼位于用戶空間中&#xff0c;因此不需要重新編譯內…

實時數倉項目需求及架構設計

第2章實時數倉項目需求及架構設計 2.1 項目需求分析 1&#xff09;采集平臺 ? &#xff08;1&#xff09;用戶行為數據采集平臺搭建 ? &#xff08;2&#xff09;業務數據采集平臺搭建 2&#xff09;離線需求 … 2.2 項目框架 2.2.1 技術選型 ? 技術選型主要因素&a…

15 - matlab m_map地學繪圖工具基礎函數 - 一些數據轉換函數(二)

15 - matlab m_map地學繪圖工具基礎函數 - 一些數據轉換函數&#xff08;二&#xff09; 0. 引言1. 關于m_geodesic2. 關于mygrid_sand23. 結語 0. 引言 通過前面篇節已經將m_map繪圖工具中大多繪圖有關的函數進行過介紹&#xff0c;已經能夠滿足基本的繪圖需求&#xff0c;本節…

探索 `DatagramSocket` 類

DatagramSocket 類是 Java 網絡編程中的一個關鍵組件&#xff0c;專門用于處理 UDP&#xff08;用戶數據報協議&#xff09;通信。與基于連接的 TCP 不同&#xff0c;UDP 是一種無連接協議&#xff0c;適用于對速度和效率要求較高&#xff0c;但對可靠性要求相對較低的場景。 …

【JavaScript】包裝類

包裝類 JS 提供了三個主要的包裝類&#xff1a;String、Number、Boolean。如果嘗試把原始類型&#xff08;string、number、boolean&#xff09;數據當成對象使用&#xff0c;JS 會自動將其轉換為對應包裝類的實例。 我們先來看一下 “基本類型數據” 及 “其包裝類的實例” …

個人倒計時頁面源碼,實用倒計時單頁源碼

一、源碼描述 這是一款非常實用的個人倒計時頁面&#xff0c;支持設置未來一年時間&#xff0c;支持設置背景音樂&#xff0c;支持自定義下拉頁面&#xff0c;點擊向下箭頭查看。 二、源碼截圖 三、源碼下載

docker 常用命令,后面不斷更新

1.從Docker容器中下載文件到本地的方法 使用 docker cp 命令:該命令可以將文件或目錄從容器復制到主機。該方法簡單快捷&#xff0c;適用于少量文件的下載。 # 將容器名為my_container中的 /data/file.txt文件復制到本地/path/to/save/file.txt docker cp my_container:/data/…

深入探討【C++容器適配器】:現代編程中的【Stack與Queue】的實現

目錄 一、Stack&#xff08;棧&#xff09; 1.1 Stack的介紹 1.2 Stack的使用 1.3 Stack的模擬實現 二、Queue&#xff08;隊列&#xff09; 2.1 Queue的介紹 2.2 Queue的使用 2.3 Queue的模擬實現 三、容器適配器 3.1 什么是適配器 3.2 為什么選擇deque作為stack和…

kylin入門教程

Apache Kylin的入門教程主要涵蓋以下幾個方面&#xff1a; 一、Apache Kylin簡介 Apache Kylin是一個開源的分布式分析引擎&#xff0c;提供Hadoop之上的SQL接口及多維分析&#xff08;OLAP&#xff09;能力以支持超大規模數據。最初由eBay Inc.開發并貢獻至開源社區&#xf…

基于Vue和UCharts的前端組件化開發:實現高效、可維護的詞云圖與進度條組件

基于Vue和UCharts的前端組件化開發&#xff1a;實現高效、可維護的詞云圖與進度條組件 摘要 隨著前端技術的迅速發展和業務場景的日益復雜&#xff0c;傳統的整塊應用開發方式已無法滿足現代開發的需求。組件化開發作為一種有效的解決方案&#xff0c;能夠將系統拆分為獨立、…

Shell基礎之函數和數組

目錄 函數 什么是函數 函數的語法 函數的調用 函數的返回值 函數的案例 函數變量的作用域 遞歸函數 函數庫文件 數組 定義數組語法 數組操作 獲取所有元素 獲取元素下標 獲取數組長度 獲取數組元素 數組添加元素 刪除數組元素 刪除數組 遍歷數組元素 數組案…

解決pycharm無法識別miniconda

解決pycharm無法識別miniconda 找到miniconda安裝目錄下condabin/conda.bat文件&#xff0c;點擊load即可識別codna環境 a環境

Spring Boot(七十九):SprngBoot整合Apache tika做文件類型檢測

之前有一個章節介紹了Apache tika實現文檔內容解析,地址如下:Spring Boot(六十八):SpringBoot 整合Apache tika 實現文檔內容解析_springboot tika pptx-CSDN博客 下面我們介紹Apache tika實現文件類型檢測 1 引入依賴 <dependency><groupId>org.apache.tika&…

Docker 掛載目錄空間占滿修改/var/lib/docker/overlay2 的路徑解決方案

本文詳細描述了在CentOS7系統中卸載舊版Docker、安裝依賴、添加Docker源、配置存儲路徑并啟動Docker&#xff0c;使其在/home目錄下運行的過程。 以下是在CentOS 7下重新安裝Docker并將其安裝在/home/下的完整步驟&#xff1a; 卸載舊版本的Docker。如果您之前已經安裝了Dock…

仕考網:沒有學位證能考公務員嗎?

公務員考試需要滿足報名條件才能參加&#xff0c;沒有學位證能考公嗎? 沒有學位證書的考生也有機會參與公務員考試雖然可以選擇的崗位比較少&#xff0c;但可以報考參加那些不設定學位要求的崗位。當發布的公務員招錄信息中某一職位的學位要求標注為“無要求”時&#xff0c;…

【C++】:繼承[下篇](友元靜態成員菱形繼承菱形虛擬繼承)

目錄 一&#xff0c;繼承與友元二&#xff0c;繼承與靜態成員三&#xff0c;復雜的菱形繼承及菱形虛擬繼承四&#xff0c;繼承的總結和反思 點擊跳轉上一篇文章&#xff1a; 【C】&#xff1a;繼承(定義&&賦值兼容轉換&&作用域&&派生類的默認成員函數…

MATLAB Gazebo聯合仿真

準備仿真環境&#xff1a;在Gazebo中設置仿真場景&#xff0c;包括機器人模型、環境布局、傳感器和執行器等。編寫MATLAB腳本&#xff1a;在MATLAB中編寫控制算法和數據處理腳本&#xff0c;用于接收Gazebo中的傳感器數據&#xff0c;并生成控制命令。建立通信&#xff1a;通過…