Python判斷海域有多少個小島
在一片大海中 有很多小島
我們將小島所在的位置定義為1,海水的位置定義為0
小島如果上下左右相連線,那麼就是一個整體
我們要從中判斷 整片海域有多少個小島
[“1”,“1”,“1”,“1”,“0”],
[“1”,“1”,“0”,“1”,“0”],
[“1”,“1”,“0”,“0”,“0”],
[“0”,“0”,“0”,“0”,“0”]
這就是一片海域
可以看出裡面只有一個島嶼
我們寫程式來識別一下
首先 我們讀取所有島嶼的座標 將小島篩選出來
# 資料座標儲存列表
data_1 = []
# 將座標新增到列表中
for i in range(len(grid)):
for j in range(len(grid[i])):
if int(grid[i][j]):
data_1.append((i, j))
然後迴圈判斷同一島嶼的座標
# 臨時資料列表
data_2 = []
# 計算區域座標
while data_1:
d = [data_1.pop()]
# 處理處於同一區域的座標
while True:
for i in d:
if (i[0] + 1, i[1]) in data_1:
data_1.remove((i[0] + 1, i[1]))
d.append((i[0] + 1, i[1]))
if (i[0] - 1, i[1]) in data_1:
data_1.remove((i[0] - 1, i[1]))
d.append((i[0] - 1, i[1]))
if (i[0], i[1] + 1) in data_1:
data_1.remove((i[0], i[1] + 1))
d.append((i[0], i[1] + 1))
if (i[0], i[1] - 1) in data_1:
data_1.remove((i[0], i[1] - 1))
d.append((i[0], i[1] - 1))
if (i[0] + 1, i[1]) not in data_1 or (i[0] - 1, i[1]) not in data_1 \
or (i[0], i[1] + 1) not in data_1 or (i[0], i[1] - 1) not in data_1:
break
data_2.append(d)
完整程式碼如下:
# grid = [
#
# ["1","1","0","0","0"],
#
# ["1","1","0","0","0"],
#
# ["0","0","1","0","0"],
#
# ["0","0","0","1","1"]
#
# ]
grid = [
["1","1","1","1","0"],
["1","1","0","1","0"],
["1","1","0","0","0"],
["0","0","0","0","0"]
]
# 資料座標儲存列表
data_1 = []
# 將座標新增到列表中
for i in range(len(grid)):
for j in range(len(grid[i])):
if int(grid[i][j]):
data_1.append((i, j))
# 臨時資料列表
data_2 = []
# 計算區域座標
while data_1:
d = [data_1.pop()]
# 處理處於同一區域的座標
while True:
for i in d:
if (i[0] + 1, i[1]) in data_1:
data_1.remove((i[0] + 1, i[1]))
d.append((i[0] + 1, i[1]))
if (i[0] - 1, i[1]) in data_1:
data_1.remove((i[0] - 1, i[1]))
d.append((i[0] - 1, i[1]))
if (i[0], i[1] + 1) in data_1:
data_1.remove((i[0], i[1] + 1))
d.append((i[0], i[1] + 1))
if (i[0], i[1] - 1) in data_1:
data_1.remove((i[0], i[1] - 1))
d.append((i[0], i[1] - 1))
if (i[0] + 1, i[1]) not in data_1 or (i[0] - 1, i[1]) not in data_1 \
or (i[0], i[1] + 1) not in data_1 or (i[0], i[1] - 1) not in data_1:
break
data_2.append(d)
print(len(data_2))
效果圖如下:
一起學習python,小白指導,教學分享記得私信我
相關文章
- C#版--判斷一個月有多少天C#
- 下拉選項,一個小判斷
- js如何判斷一個變數是否有值JS變數
- 如何判斷一個元素沒有任何內容
- python如何判斷一列是否有資料Python
- 小程式創業:小程式到底有多少個流量入口,真的有40多個嗎?創業
- python如何判斷一個物件是否是列表Python物件
- Python判斷閏年Python
- js判斷物件裡面是否有某個屬性JS物件
- C語言判斷輸入小寫字母的個數C語言
- python isinstance 判斷各種型別的小細節Python型別
- python如何判斷一個數是否是整數Python
- python能判斷一個物件的型別嗎Python物件型別
- JavaScript判斷整數或者小數JavaScript
- Python判斷變數是否是整數的方法有哪些?Python變數
- python如何判斷字串相等Python字串
- python判斷是否為listPython
- python if判斷的使用格式Python
- Python中None如何判斷PythonNone
- python如何判斷迴文Python
- python 判斷是否為中文Python
- python中字串格式判斷Python字串
- python之判斷語句Python
- nginx判斷路徑是否含有某個引數做判斷Nginx
- 判斷元素是否有重疊部分
- python怎麼判斷一個數是幾位數Python
- python中如何判斷list中是否包含某個元素Python
- Python Tips 01 : 判斷兩個檔案是否相同Python
- EditText監聽方法,實時的判斷輸入多少字元字元
- 【Python】Python判斷統計每個月天數原始碼示例Python原始碼
- 有沒有辦法判斷某個儲存過程是否在執行?儲存過程
- 判斷一個物件是否為空物件,判斷一個物件中是否有空值物件
- 【質數判斷】給定兩個數,判斷這兩個數是否互質?
- PbootCMS判斷有無子選單各種條件判斷和標籤boot
- Android Color 判斷色值小結Android
- Python 基礎 - if else流程判斷Python
- Python中型別最佳判斷方法Python型別
- python怎麼判斷星期幾Python