求島嶼數量并遍歷所有可能的問題
問題:給定一個由 ‘1’(陸地)和 ‘0’(水)組成的的n維網格(n為奇數),初始陣為陣心處為1的方陣,n為3的時候,初始島嶼是這樣的:
[[0,0,0],
[0,1,0],
[0,0,0]]
由于填海造陸,需沿海島四周輻射海島,要求新輻射的海島只能與以前的海島相鄰,以此類推。
也就是說
[[0,1,1],
[0,1,0],
[0,0,0]]這樣的島嶼是符合規則的,
這樣的
[[0,0,1],
[0,1,0],
[0,0,1]]就是不符合規則的。
如果輻射隨時可能中止,那么試問這種填海造陸有多少種可能性呢?求大佬給個思路
uj5u.com熱心網友回復:
https://blog.csdn.net/qq_21553301/article/details/101119095uj5u.com熱心網友回復:
那個是算給定仿真中島嶼數量的,和我這個還不太一樣uj5u.com熱心網友回復:
import numpy as np
b = []
class Solution():
def countIslands(self,a):
row,col = a.shape
x,y = int((row-1)/2),int((col-1)/2)
#遍歷二維陣列,遇到為1的點,就呼叫感染函式
self.infect(a,row,col,x,y)
def infect(self,m,row ,col,i,j):
if(i<0 or i>=row or j<0 or j>=col):
return
if m[i][j]!=1:
m[i][j]=1
b.append(m)
print(m)
#infect(m,row,col,i,j-1)
self.infect(m,row,col,i,j-1)
self.infect(m,row,col,i-1,j)
self.infect(m,row,col,i+1,j)
self.infect(m,row,col,i,j+1)
n = 3
m = int((n-1)/2)
a = np.zeros((n,n))
a[m][m] = 1
b.append(a)
print(a.shape)
s = Solution()
s.countIslands(a)
uj5u.com熱心網友回復:
有沒有大佬幫忙看看代碼,電腦跑出來一直是死回圈,是不是遞回那塊要求的算力太強了?怎么解決呢轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/11736.html
上一篇:dubbo學習之事件通知實踐
