圖論 | 島嶼數量(深搜,廣搜)

島嶼數量

acm模式:99.島嶼數量
核心代碼模式: 200. 島嶼數量

思路

  1. 遍歷grid,如果它是1,則通過bfs/dfs將這個小島的grid變為0

dfs

def dfs(grid,i,j):if i<0 or j<0 or i>=len(grid) or j>=len(grid[0]):returnif grid[i][j] == 0:returnelse:grid[i][j] = 0dfs(grid,i-1,j)dfs(grid,i+1,j)dfs(grid,i,j-1)dfs(grid,i,j+1)def main():# 構造島嶼n,m = map(int,input().split())grid = []for _ in range(n):grid.append(list(map(int,input().split()))) res = 0for i in range(len(grid)):for j in range(len(grid[0])):if grid[i][j] == 1:res = res+1dfs(grid,i,j)print(res)if __name__ == "__main__":main()  

bfs

from collections import dequedef bfs(grid,i,j):queue = deque([(i,j)])while queue:i,j = queue.popleft()if i>=0 and i<len(grid) and j>=0 and j<len(grid[0]) and grid[i][j]==1:grid[i][j] = 0queue.append((i-1,j))queue.append((i+1,j))queue.append((i,j-1))queue.append((i,j+1))def main():# 構造島嶼n,m = map(int,input().split())grid = []for _ in range(n):grid.append(list(map(int,input().split()))) res = 0for i in range(len(grid)):for j in range(len(grid[0])):if grid[i][j] == 1:res = res+1bfs(grid,i,j)print(res)if __name__ == "__main__":main()  

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

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

相關文章

CSS 文檔流:元素排列的底層邏輯與布局控制

CSS 文檔流:元素排列的底層邏輯與布局控制 一、文檔流的核心概念 文檔流(Normal Flow)作為瀏覽器默認的布局模式,從根本上決定了元素在頁面上的自然排列順序。**它的核心規則遵循從上到下依次堆疊的原則,其中塊級元素會獨占一行,行內元素則水平排列。**這種布局模式與書…

el-table表格toggleRowSelection方法選中無效

開發中會有對表格中進行默認選中的功能&#xff0c;element-plus官方有一個選中示例&#xff0c;如下 const toggleSelection (rows?: User[]) > {if (rows) {rows.forEach((row) > {multipleTableRef.value!.toggleRowSelection(row, undefined)})} else {multipleTa…

Java EE(16)——網絡原理——TCP協議解析二

4.滑動窗口(效率機制) 上篇博客講到的確認應答/超時重傳/連接管理都是安全機制&#xff0c;但也會降低傳輸效率。滑動窗口就是在保證可靠傳輸的基礎上&#xff0c;盡可能地提高傳輸效率。 根據確認應答機制&#xff0c;客戶端每發送一個請求都需要收到服務器的確認應答報文后才…

從入門到精通【MySQL】 CRUD

文章目錄 &#x1f4d5;1. Create 新增??1.1 單行數據全列插入??1.2 單行數據指定列插入??1.3 多行數據指定列插入 &#x1f4d5;2. Retrieve 檢索??2.1 全列查詢??2.2 指定列查詢??2.3 查詢字段為表達式??2.4 為查詢結果指定別名??2.5 結果去重查詢 &#x1f…

C++學習之云盤上傳文件列表下載

1.上傳打開文件操作 1. 注冊 客戶端 成功 {"code":"002"} 該用戶已存在 {"code":"003"} 失敗 {"code":"004"} 服務器 2. 登錄 客戶端 服務器 // url http: //127.0.0.1:80/reg // post 數據格式 …

OpenCV圖像拼接(5)用于計算一組圖像的特征點和描述符的函數computeImageFeatures()

操作系統&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 編程語言&#xff1a;C11 算法描述 cv::detail::computeImageFeatures 是 OpenCV 中用于計算一組圖像的特征點和描述符的函數&#xff0c;通常在圖像拼接或類似的任務中使用。這個函…

詳細解析格式化消息框的代碼

書籍&#xff1a;《windows程序設計(第五版)》的開始 環境&#xff1a;visual studio 2022 內容&#xff1a;格式化消息框 說明&#xff1a;以下內容大部分來自騰訊元寶。 封裝MessageBoxPrintf 在MessageBoxPrintf()中處理可變參數&#xff0c;通過va_list機制&#xff0c…

【SpringSecurity】詳細核心類與過濾器流程講解和封裝通用組件實戰

Spring Security 全面介紹 1. 什么是 Spring Security&#xff1f; Spring Security 是一個功能強大且高度可定制的認證和訪問控制框架&#xff0c;是保護基于 Spring 的應用程序的標準工具。它是一個專注于為 Java 應用程序提供認證和授權的框架&#xff0c;實際上它是 Spri…

淺談Qt事件子系統——以可拖動的通用Widget為例子

淺談Qt事件子系統——以可拖動的通用Widget為例子 這一篇文章是一個通過實現可拖動的通用Widget為引子簡單介紹一下我們的事件對象子系統的事情 代碼和所有的文檔 1&#xff1a;Qt側的API介紹和說明 ? 這個是每一個小項目的慣例&#xff0c;我會介紹大部分Qt程序中使用到的…

[入門]NUC13配置Ubuntu20.04詳細步驟

文章目錄 1. 安裝Ubuntu20.041.1 制作系統啟動盤1.1.1 下載鏡像文件1.1.2 配置啟動盤 1.2 安裝內存條、硬盤1.3 安裝系統 2. 網卡驅動配置2.1 關閉安全啟動2.2 安裝intel官方網卡驅動backport2.2.1 第四步可能會出現問題 2.3 ubuntu官方的驅動2.4 重啟 3. 軟件安裝3.1 錄屏軟件…

(七)Reactor響應式編程框架

一、簡介 Reactor 是運行在 JVM 上的編程框架&#xff0c;最大特點是完全非阻塞&#xff0c;能高效控制 “背壓”&#xff0c;簡單來說就是處理數據傳輸時速度不匹配的問題 。它能和 Java 8 里的一些功能直接搭配使用&#xff0c;像處理異步結果的 CompletableFuture、處理數據…

從邊緣到核心:群聯云防護如何重新定義安全加速邊界?

一、安全能力的全方位碾壓 1. 協議層深度防護 四層防御&#xff1a; 動態過濾畸形TCP/UDP包&#xff08;如SYN Flood&#xff09;&#xff0c;傳統CDN僅限速率控制。技術示例&#xff1a;基于AI的協議指紋分析&#xff0c;攔截異常連接模式。 七層防御&#xff1a; 精準識別業…

【Linux】Ubuntu 24.04 LTS 安裝 OpenJDK 8

目錄 通過 apt-get 直接安裝 JDK 1. 更新 apt 軟件源 2. 檢查 JDK 是否已安裝 3. 安裝OpenJDK 4. 檢查 JDK 是否成功安裝 5. 設置 JAVA_HOME 環境變量 找到需要設置的 Java 路徑 使用文本編輯器打開/etc/environment文件 添加 Java 安裝路徑 應用更改和驗證配置 通過…

Java 方法執行原理底層解析

java 文件經過javac編譯后&#xff0c;變成了存儲了一系列指令的.class文件。本文從指令層面分析Java 方法從解析、調用到執行的過程。 1 指令 一般格式&#xff1a;操作碼 [操作數1] [操作數2] ... 操作碼 1個字節的無符號整數&#xff08;范圍&#xff1a;0x00 ~ 0xFF&…

【數學建模】最大最小值模型詳解

數學建模中的最大最小值模型詳解 文章目錄 數學建模中的最大最小值模型詳解引言最大最小值模型的基本概念最大化問題最小化問題 常見的求解方法1. 微積分法2. 線性規劃3. 非線性規劃4. 動態規劃 實際應用案例案例1&#xff1a;生產規劃問題案例2&#xff1a;投資組合優化 最大最…

C#的List和DIctionary實現原理(手搓泛型類以及增刪查改等功能)

這里寫自定義目錄標題 ListDIctionary List MyList類&#xff1a;這是一個泛型類&#xff0c;能夠存儲任意類型的元素。 _items數組&#xff1a;用于實際存儲元素。 _size變量&#xff1a;記錄當前列表中的元素數量。 構造函數&#xff1a;初始化數組容量為 4。 Count屬性&…

Linux系統管理與編程08:任務驅動綜合應用

蘭生幽谷&#xff0c;不為莫服而不芳&#xff1b; 君子行義&#xff0c;不為莫知而止休。 [環境] windows11、centos9.9.2207、zabbix6、MobaXterm、Internet環境 [要求] zabbix6.0安裝環境&#xff1a;Lamp&#xff08;linux httpd mysql8.0 php&#xff09; [步驟] 3 …

數據結構之基本隊列-順序結構實現-初始化-判斷隊列是否為空(front=rear)-出隊-入隊-隊尾滿了,調整隊列-獲取隊頭元素

數據結構之基本隊列-順序結構實現-初始化-判斷隊列是否為空(frontrear)-出隊-入隊-隊尾滿了&#xff0c;調整隊列-獲取隊頭元素——完整可運行代碼 #include <stdio.h>#define MAXSIZE 100 typedef int ElemType;typedef struct {ElemType data[MAXSIZE];int front;int…

基于LabVIEW的Windows平臺高速閉環控制

在Windows系統下&#xff0c;通過LabVIEW實現高速閉環控制面臨兩大核心挑戰&#xff1a;非實時操作系統的調度延遲與硬件接口的傳輸速度限制。以USB-6351&#xff08;NI USB-6351 DAQ卡&#xff09;為例&#xff0c;其理論采樣率可達1.25 MS/s&#xff08;單通道&#xff09;&a…

Java面試黃金寶典8

1. 什么是 Spring MVC 定義 Spring MVC 是 Spring 框架里用于構建 Web 應用程序的模塊&#xff0c;它嚴格遵循 MVC&#xff08;Model - View - Controller&#xff09;設計模式。這種設計模式把應用程序清晰地劃分成三個主要部分&#xff1a; Model&#xff08;模型&#xff0…