【C++算法】82.BFS解決FloodFill算法_被圍繞的區域

文章目錄

    • 題目鏈接:
    • 題目描述:
    • 解法
    • C++ 算法代碼:


題目鏈接:

130. 被圍繞的區域


題目描述:

f8ddd3dda7f80be6e605cb1d683b6e67


解法

BFS一層層剝開。


C++ 算法代碼:

class Solution {// 定義四個方向的偏移量:右、左、下、上int dx[4] = {0, 0, 1, -1};int dy[4] = {1, -1, 0, 0};// 網格的行數和列數int m, n;public:// 主函數:處理被'X'包圍的區域void solve(vector<vector<char>>& board) {// 獲取網格的行數和列數m = board.size(), n = board[0].size();// 1. 處理四條邊上的'O'及其連通區域// 上邊界for (int j = 0; j < n; j++) {if (board[0][j] == 'O')bfs(board, 0, j);  // 標記為'.'}// 下邊界for (int j = 0; j < n; j++) {if (board[m - 1][j] == 'O')bfs(board, m - 1, j);  // 標記為'.'}// 左邊界for (int i = 0; i < m; i++) {if (board[i][0] == 'O')bfs(board, i, 0);  // 標記為'.'}// 右邊界for (int i = 0; i < m; i++) {if (board[i][n - 1] == 'O')bfs(board, i, n - 1);  // 標記為'.'}// 2. 遍歷整個網格,進行最終處理for (int i = 0; i < m; i++) {for (int j = 0; j < n; j++) {if (board[i][j] == 'O') {// 這些'O'是被'X'包圍的,需要改為'X'board[i][j] = 'X';} else if (board[i][j] == '.') {// 這些'.'是之前從邊界'O'擴展來的,恢復為'O'board[i][j] = 'O';}}}}// BFS輔助函數:將與(i,j)相連的所有'O'標記為'.'void bfs(vector<vector<char>>& board, int i, int j) {queue<pair<int, int>> q;q.push({i, j});board[i][j] = '.';  // 標記為'.',表示這個位置不會被'X'包圍while (!q.empty()) {auto [a, b] = q.front();q.pop();// 遍歷四個方向for (int k = 0; k < 4; k++) {int x = a + dx[k], y = b + dy[k];// 檢查新坐標是否在網格內且為'O'if (x >= 0 && x < m && y >= 0 && y < n && board[x][y] == 'O') {q.push({x, y});board[x][y] = '.';  // 標記為'.'}}}}
};

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

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

相關文章

商湯發布具身智能平臺,讓機器人像人一樣和現實世界交互

7月27日&#xff0c;在“大愛無疆模塑未來”WAIC 2025大模型論壇上&#xff0c;商湯科技重磅發布「悟能」具身智能平臺。「悟能」具身智能平臺以商湯具身世界模型為核心引擎&#xff0c;依托商湯大裝置提供端側和云側算力支持&#xff0c;能夠為機器人、智能設備提供強大的感知…

MCP工作原理

在談MCP原理前&#xff0c;我們先談談MCP的技術前身—Function Calling。1.Function Calling技術在FunctionCalling技術出現之前&#xff0c;大語言模型雖然擁有強大的知識儲備和語言理解能力&#xff0c;但是只能提供自身數據庫已有的信息&#xff0c;無法和外界進行信息交互。…

VSCode手動版本更新

技術背景 使用VSCode的的過程中&#xff0c;如果打開了自動更新功能&#xff0c;每隔一段時間就會有更新提示。為了保持版本的穩定性&#xff0c;我們可以在設置中將Update: Mode設置為none&#xff0c;這樣就不會觸發自動更新。但有時又有版本更新的需求&#xff0c;可能是版本…

醫療超聲成像專用AFE模擬前端

醫療超聲成像作為一種廣泛應用于臨床診斷的重要技術&#xff0c;對于提供清晰、準確的醫學圖像起著關鍵作用。在超聲成像系統中&#xff0c;AFE模擬前端扮演著至關重要的角色。它負責對超聲換能器接收到的微弱電信號進行處理和轉換&#xff0c;為后續的數字信號處理提供高質量的…

機器學習之線性回歸——小白教學

一、線性回歸簡介1.什么是線性回歸線性回歸(Linear regression)是利?回歸?程(函數)對?個或多個?變量(特征值)和因變量(?標值)之間關系進?建模的?種分析?式。特點&#xff1a;只有?個?變量的情況稱為單變量回歸&#xff0c;多于?個?變量情況的叫做多元回歸線性回…

.NET 10 中的新增功能系列文章1——運行時中的新增功能

引言 隨著 .NET 10 預覽版6的發布&#xff0c;微軟在運行時層面帶來了一系列重要的性能改進和新功能。這些改進主要集中在JIT編譯器優化、硬件指令集支持、內存管理等方面&#xff0c;旨在進一步提升應用程序的執行效率和資源利用率。本文將詳細解析這些運行時增強功能&#x…

安寶特方案丨AI算法能力開放平臺:適用于人工裝配質檢、點檢、實操培訓

當前工業AI圖形識別算法的應用存在投入成本高、維護更新難、依賴固定相機、應用范圍窄、與實際作業脫節等問題。 針對以上情況&#xff0c;安寶特提出了“AI算法能力開放平臺”&#xff0c;目的是讓AI圖形識別算法可以與現場實際的人工點檢作業、裝配作業、質檢作業、培訓作業…

水下目標識別準確率↑89%!陌訊多模態融合算法在智慧水務的落地實踐

一、行業痛點&#xff1a;智慧水務的檢測困境據《2024城市水務智能化白皮書》統計&#xff0c;傳統水務檢測面臨三大挑戰&#xff1a;??水體干擾??&#xff1a;渾濁度>100NTU時&#xff0c;目標漏檢率高達65%??動態環境??&#xff1a;水流擾動導致目標形變&#xff…

手動開發一個串口調試工具(三):基于 Qt Widgets 搭建串口調試界面

在上一篇中&#xff0c;我們通過 QCoreApplication 構建了一個基礎的串口收發控制臺程序&#xff0c;并實現了周期發送、十六進制轉換和數據讀取等核心功能。本篇將基于此邏輯&#xff0c;進一步將其封裝為一個圖形化界面程序&#xff0c;借助 Qt Widgets 提供的控件搭建完整的…

量子計算革命:重新定義計算的邊界與未來

引言&#xff1a;我們正站在計算革命的新起點 當IBM在2019年宣布實現"量子霸權"時&#xff0c;很多人認為這只是實驗室里的科學突破。然而&#xff0c;短短幾年后&#xff0c;量子計算已經從理論走向實踐&#xff0c;從實驗室走向產業應用。我們正站在一個全新的計算…

Python 數據可視化之 Matplotlib 庫

在當今數據驅動的時代&#xff0c;數據可視化&#xff08;Data Visualization&#xff09;已成為數據科學、機器學習、金融分析、工程建模等多個領域中不可或缺的一環。數據可視化不僅幫助我們更直觀地理解數據的分布和趨勢&#xff0c;還能輔助決策、展示研究成果以及增強數據…

Makefile 快速入門指南

Makefile 快速入門指南 什么是Makefile? Makefile 是一個自動化構建工具的配置文件&#xff0c;用于管理代碼編譯、測試和清理等任務。它通過定義規則&#xff08;rules&#xff09;來指定文件之間的依賴關系&#xff0c;當源文件改變時&#xff0c;只重新編譯受影響的部分&…

Linux學習--C語言(指針4、結構體)

1.二維數組的傳參int a[2][3] {1, 2, 3, 4, 5, 6};fun(a,2); int fun(int (*p)[3], int len);2.指針數組的傳參char *pastr[5] {NULL};int fun(char **pstr,int len);例子&#xff1a;#include <stdio.h> #include <string.h>int InputArray(char (*p)[32], int …

【STM32】FreeRTOS 消息隊列(五)

在 FreeRTOS 中&#xff0c;任務消息隊列&#xff08;Message Queue&#xff09; 是一種非常關鍵的通信機制&#xff0c;用于在任務之間 傳遞數據、同步事件。 它是實現任務 解耦、異步通信 的核心工具之一&#xff0c;FreeRTOS 的消息隊列是任務之間通信的橋梁。 簡單點說&am…

【筆記】加速 uv 安裝:系統環境變量配置國內鏡像源

使用 Conda 工具鏈創建 UV 本地虛擬環境全記錄——基于《Python 多版本與開發環境治理架構設計》-CSDN博客 命令行創建 UV 環境及本地化實戰演示—— 基于《Python 多版本與開發環境治理架構設計》的最佳實踐-CSDN博客 加速 uv 包安裝&#xff1a;Windows 系統環境變量配置國內…

Three.js 渲染優化處理

基于項目經驗和最佳實踐&#xff0c;以下是渲染優化的具體處理方法&#xff1a; 1. 幾何體與材質優化 使用 BufferGeometry // 推薦&#xff1a;使用 BufferGeometry 替代 Geometry const geometry new THREE.BufferGeometry();合并幾何體 // 將多個幾何體合并為一個以減少繪制…

Kafka——Kafka控制器

引言在Kafka集群中&#xff0c;有一個組件堪稱"隱形的指揮官"——它默默協調著Broker的加入與退出&#xff0c;管理著主題的創建與刪除&#xff0c;掌控著分區領導者的選舉&#xff0c;它就是控制器&#xff08;Controller&#xff09;。想象一個擁有100臺Broker的大…

編程與數學 03-002 計算機網絡 11_域名系統(DNS)

編程與數學 03-002 計算機網絡 11_域名系統&#xff08;DNS&#xff09;一、DNS的作用與功能&#xff08;一&#xff09;域名與IP地址的映射關系&#xff08;二&#xff09;DNS的層次結構二、DNS查詢過程&#xff08;一&#xff09;遞歸查詢與迭代查詢&#xff08;二&#xff0…

影翎Antigravity將發布全球首款全景無人機,8月開啟公測招募

7月28日&#xff0c;消費級無人機品牌「影翎Antigravity」及品牌標識官宣亮相&#xff0c;計劃推出全新品類——全球首款「全景無人機」。這一消息引發行業震動&#xff0c;消費級航拍無人機市場或將迎來顛覆性飛行體驗。影翎Antigravity官方介紹&#xff0c;引力不僅是束縛雙腳…

SpringBoot集成Quzrtz實現定時任務

一 定時任務介紹 自律是很多人都想擁有的一種能力&#xff0c;或者說素質&#xff0c;但是理想往往很美好&#xff0c;現實卻是無比殘酷的。在現實生活中&#xff0c;我們很難做到自律&#xff0c;或者說做到持續自律。例如&#xff0c;我們經常會做各種學習計劃、儲蓄計劃或減…