130被圍繞的區域

来源:https://www.cnblogs.com/cong12586/archive/2020/07/29/13399237.html
-Advertisement-
Play Games

from typing import List# 這道題看了大佬寫的代碼,經過自己的理解寫出來了。# 從最外圍的四周找有沒有為O的,如果有的話就進入深搜函數,然後深搜遍歷# 判斷上下左右的位置是否為Oclass Solution: def solve(self, board: List[List[s ...


from typing import List
# 這道題看了大佬寫的代碼,經過自己的理解寫出來了。
# 從最外圍的四周找有沒有為O的,如果有的話就進入深搜函數,然後深搜遍歷
# 判斷上下左右的位置是否為O
class Solution:
def solve(self, board: List[List[str]]) -> None:
# 判斷是否為空列表
if not board or not board[0] : return
# 求出列表的有幾行和有幾列
row = len(board)
col = len(board[0])
# 深搜,當邊界為O進行判斷
def dfs(index1,index2):
# 首先將O變成B,之後再變回來。
board[index1][index2] = 'B'
# 遍歷上下左右
for x,y in [(0,1),(0,-1),(1,0),(-1,0)]:
print(x,y)
# 註意這裡不能改變index1和index2的值,因為後邊還要用。
i = index1 + x
j = index2 + y
# 如果當前位置的上下左右不出邊界而且位置上為O就,進行深搜
# 註意這裡邊界上邊不能判斷,
if 1 <= i < row and 1 <= j < col and board[i][j] == "O":
print("111")
dfs(i,j)
# 判斷第一行和最後一行上的邊界值
for index1 in range(col):
if board[0][index1] == "O":
dfs(0,index1)
if board[row - 1][index1] == 'O':
dfs(row - 1,index1)
# 判斷第一列和最後一列的邊界值
for index2 in range(row):
if board[index2][0] == "O":
dfs(index2,0)
if board[index2][col - 1] == 'O':
dfs(index2,col - 1)
# 將O全部改寫成X,將之前寫的B也改寫成O
for index1 in range(row):
for index2 in range(col):
if board[index1][index2] == "O":
board[index1][index2] = "X"
if board[index1][index2] == "B":
board[index1][index2] = 'O'

A = Solution()
print(A.solve([["O","X","X","O","X"],["X","O","O","X","O"],["X","O","X","O","X"],["O","X","O","O","O"],["X","X","O","X","O"]])
)

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 本篇要學習的內容和知識結構概覽 多態性 編譯時的多態性稱為靜態聯編. 當調用重載函數時, 在編譯期就確定下來調用哪個函數. 運行時的多態性稱為動態聯編. 在運行時才能確定調用哪個函數, 由虛函數來支持. 靜態聯編中的賦值相容性及名字支配規律 派生一個類的原因並非總是為了添加新的成員或成員函數, 有時 ...
  • 摘要 Stream 是對集合對象功能的增強,它專註於對集合對象進行各種非常便利、高效的聚合操作,或者大批量數據操作。通常我們需要多行代碼才能完成的操作,藉助於Stream流式處理可以很簡單的實現。 Stream 不是集合元素,它不是數據結構並不保存數據,它是有關演算法和計算的。 創建Steam流 調用 ...
  • 此pdf文為pycharm最全使用教材,由山在嶺就在博主花了一周多時間嘔心創作~ 點擊此處下載提取碼:fdno ...
  • 點擊此處進入下載地址提取碼:67ju 目 錄第一部分 分類 第 1 章 機器學習基礎 .....................................21.1 何謂機器學習 ............................................3 1.1.1 感測器和海量 ...
  • 阿裡雲購買伺服器 購買雲伺服器,伺服器版本選擇centos 7.5版本,之後在控制台打開實例 2,設置root密碼 如果你購買時沒有設置root密碼 這裡需要重置下 下載軟體並安裝寶塔 本地下載putty 鏈接工具 填入你的公網ip 然後open 賬號填root 密碼就是剛纔設置的那個密碼 然後執行 ...
  • import concurrent import requests; from concurrent.futures import ThreadPoolExecutor import os; import parsel; def send_request(url): header = { "user ...
  • import requests; import re; import os; import parsel; 1.請求網頁 header = { "user-agent":'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537. ...
  • import requests; import re; import os; # 1.請求網頁 header = { "user-agent":'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537.36 (KHTML, li ...
一周排行
    -Advertisement-
    Play Games
  • 概述:這個WPF項目通過XAML繪製汽車動態速度表盤,實現了0-300的速度刻度,包括數字、指針,並通過定時器模擬速度變化,展示了動態效果。詳細實現包括界面設計、刻度繪製、指針角度計算等,通過C#代碼與XAML文件結合完成。 新建 WPF 項目: 在 Visual Studio 中創建一個新的 WP ...
  • 概述:在WPF中使用`WpfAnimatedGif`庫展示GIF動畫,首先確保全裝了該庫。通過XAML設置Image控制項,指定GIF路徑,然後在代碼中使用庫提供的方法實現動畫控制。這簡化了在WPF應用中處理GIF圖的過程,提供了方便的介面來管理動畫播放和暫停。 當使用 WpfAnimatedGif  ...
  • 您是否曾經訪問過一個網站,它需要很長時間載入,最終你敲擊 F5 重新載入頁面。 即使用戶刷新了瀏覽器取消了原始請求,而對於伺服器來說,API也不會知道它正在計算的值將在結束時被丟棄,刷新五次,伺服器將觸發 5 個請求。 為瞭解決這個問題,ASP.NET Core 為 Web 伺服器提供了一種機制,就 ...
  • 本章將和大家分享如何通過 Elasticsearch 實現自動補全查詢功能。 一、自動補全-安裝拼音分詞器 1、自動補全需求說明 當用戶在搜索框輸入字元時,我們應該提示出與該字元有關的搜索項,如圖: 2、使用拼音分詞 要實現根據字母做補全,就必須對文檔按照拼音分詞。在 GitHub 上恰好有 Ela ...
  • using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Windows.Forms; namespace OOP { pub ...
  • 概述:以上內容詳細介紹了在C#中如何從另一個線程更新GUI,包括基礎功能和高級功能。對於WinForms,使用`Control.Invoke`;對於WPF,使用`Dispatcher.Invoke`。高級功能使用`SynchronizationContext`實現線程間通信,確保清晰、可讀性高的代碼 ...
  • Nuget包 Microsoft.Extensions.Telemetry.Abstractions 包含的新的日誌記錄source generator,它支持使用[LogProperties]將整個對象作為State與日誌一起記錄。 我將展示一種方法來控制如何使用[LogProperties]對象 ...
  • 支持.Net/.Net Core/.Net Framework,可以部署在Docker, Windows, Linux, Mac。 常見的ORM技術(比如:Entity Framework,Dapper,SqlSugar,NHibernate,等…),它們不是在做Sql語句的程式化變種,就是在做Sq ...
  • 一、引言 在現代應用程式開發中,尤其是在涉及I/O操作(如網路請求、文件讀寫等)時,非同步編程成為了提高性能和用戶體驗的關鍵技術。C#作為.NET框架下的主流開發語言,提供了強大的非同步編程支持,通過async/await關鍵字,可以讓開發者以同步的方式編寫非同步代碼,極大地簡化了非同步編程的複雜性。本文將 ...
  • 一、引言 在.NET開發中,操作Office文檔(特別是Excel和Word)是一項常見的需求。然而,在伺服器端或無Microsoft Office環境的場景下,直接使用Office Interop可能會面臨挑戰。為瞭解決這個問題,開源庫NPOI應運而生,它提供了無需安裝Office即可創建、讀取和 ...