以leetcode上的一道題為例:
200. 島嶼數量
# 方向陣列,它表示了相對於當前位置的 4 個方向的橫、縱座標的偏移量,這是乙個常見的技巧
directions = [(-1, 0), (0, -1), (1, 0), (0, 1)]
def numislands(self, grid: list[list[str]]) -> int:
m = len(grid)
# 特判
if m == 0:
return 0
n = len(grid[0])
marked = [[false for _ in range(n)] for _ in range(m)]
count = 0
# 從第 1 行、第 1 格開始,對每一格嘗試進行一次 dfs 操作
for i in range(m):
for j in range(n):
# 只要是陸地,且沒有被訪問過的,就可以使用 dfs 發現與之相連的陸地,並進行標記
if not marked[i][j] and grid[i][j] == '1':
# count 可以理解為連通分量,你可以在深度優先遍歷完成以後,再計數,
# 即這行**放在【位置 1】也是可以的
count += 1
self.__dfs(grid, i, j, m, n, marked)
# 【位置 1】
return count
def __dfs(self, grid, i, j, m, n, marked):
marked[i][j] = true
for direction in self.directions:
new_i = i + direction[0]
new_j = j + direction[1]
if 0 <= new_i < m and 0 <= new_j < n and not marked[new_i][new_j] and grid[new_i][new_j] == '1':
self.__dfs(grid, new_i, new_j, m, n, marked)
if __name__ == '__main__':
grid = [['1', '1', '1', '1', '0'],
['1', '1', '0', '1', '0'],
['1', '1', '0', '0', '0'],
['0', '0', '0', '0', '0']]
solution = solution()
result = solution.numislands(grid)
print(result)
標準輸入輸出
linux的大部分命令都具有標準的輸入輸出埠,有哪些標準裝置資訊?名稱 檔案描述符 含義裝置 說明stdin 0標準輸入 鍵盤命令在執行時所需要的輸入資料,通過它來獲取 stdout 1標準輸出 顯示器命令在執行後所產生的輸出資料,通過它來送出 stderr 2標準錯誤 顯示器命令在執行後所產生的錯...
標準輸入輸出
目錄流緩衝 格式輸出 格式輸入 目錄流緩衝 格式輸出 格式輸入 記錄下,了解概念。當用流或檔案描述字i o函式開啟乙個檔案時,分別返回乙個流或檔案描述字,後面就可以將這個流或檔案描述字作為引數交給相應讀寫函式來完成實際的讀寫操作。通過關閉檔案可以終止程式與檔案的連線。檔案描述字表示為int型別的物件...
C 筆試輸入輸出
注意 是會過濾掉不可見字元 如 空格 回車,tab 等 cin.get 字元變數名 可以用來接收字元 1 輸入資料報括多組。每組資料一行,每行的第乙個整數為整數的個數n 1 n 100 n為0的時候結束輸入。接下來n個正整數,即需要求和的每個正整數。includeusing namespace st...