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,小白指導,教學分享記得私信我
相關文章
- 根據指定月份判斷有多少天
- 下拉選項,一個小判斷
- 判斷一個有向圖是否有環
- python如何判斷一列是否有資料Python
- python如何判斷一個物件是否是列表Python物件
- Python判斷閏年Python
- if、else if、else判斷語句的幾個小例子
- 對一個連結串列判斷是否有環
- 如何判斷股票有沒有主力?主力的判斷方法
- python如何判斷一個數是否是整數Python
- python能判斷一個物件的型別嗎Python物件型別
- python 判斷是否為中文Python
- python中字串格式判斷Python字串
- python之判斷語句Python
- Python中None如何判斷PythonNone
- python if判斷的使用格式Python
- python如何判斷字串相等Python字串
- python判斷是否為listPython
- python如何判斷迴文Python
- 【Python】Python判斷統計每個月天數原始碼示例Python原始碼
- js判斷物件裡面是否有某個屬性JS物件
- Python判斷變數是否是整數的方法有哪些?Python變數
- python怎麼判斷一個數是幾位數Python
- C語言判斷輸入小寫字母的個數C語言
- 小程式創業:小程式到底有多少個流量入口,真的有40多個嗎?創業
- Python中型別最佳判斷方法Python型別
- 如何使用Python判斷奇偶數?Python
- Python 基礎 - if else流程判斷Python
- Python入門 - 判斷語句Python
- 11.9 python之判斷語句Python
- python怎麼判斷星期幾Python
- python怎麼判斷大小寫Python
- python 判斷檔案是否存在Python
- CRC 自動判斷大端 小端
- Android Color 判斷色值小結Android
- nginx判斷路徑是否含有某個引數做判斷Nginx
- 使用Python實現一個棧, 判斷括號是否平衡Python
- Python:判斷一個正整數是否為迴文數Python