cuốn sách gpt4 ai đã làm

Tìm kiếm theo chiều sâu không đệ quy của Python

In lại Tác giả: Vũ trụ không gian Thời gian cập nhật: 2023-11-03 15:05:45 25 4
mua khóa gpt4 Nike

Tôi đã viết một số mã để xác định các thành phần được kết nối trong ảnh nhị phân. Tôi đã sử dụng tìm kiếm độ sâu đệ quy đầu tiên. Tuy nhiên, đối với một số hình ảnh, Giới hạn đệ quy Python là không đủ. Ngay cả khi tôi tăng giới hạn lên mức tối đa được hỗ trợ trên máy tính, chương trình vẫn bị lỗi đối với một số hình ảnh. Làm cách nào để triển khai DFS lặp đi lặp lại? Hoặc có giải pháp nào khác tốt hơn?

Mã của tôi:

đếm=1
chiều cao=4
chiều rộng = 5
g = np.zeros((chiều cao+2, chiều rộng+2))
w = np.zeros((chiều cao+2, chiều rộng+2))
dx = [-1,0,1,1,1,0,-1,-1]
dy = [1,1,1,0,-1,-1,-1,0]

def dfs(x,y,c):
toàn cầu w
w[x][y]=c
cho tôi trong phạm vi (8):
nx = x+dx[i]
ny = y+dy[i]
nếu g[nx][ny] chứ không phải w[nx][ny]:
dfs(nx,ny,c)

def find_connected_comComponents(hình ảnh):
số lượng toàn cầu, g
g[1:-1,1:-1]=hình ảnh
cho tôi trong phạm vi (1, chiều cao + 1):
cho j trong phạm vi (1, chiều rộng + 1):
nếu g[i][j] chứ không phải w[i][j]:
dfs(i,j,count)
đếm+=1

Mask1 = np.array([[0,0,0,0,1],[0,1,1,0,1],[0,0,1,0,0],[1,0,0, 0,1]])
find_connected_comComponents(mask1)
mặt nạ in1
in w[1:-1,1:-1]

Đầu vào và đầu ra:

[[0 0 0 0 1]
[0 1 1 0 1]
[0 0 1 0 0]
[1 0 0 0 1]]
[[ 0. 0. 0. 0. 1.]
[0. 2. 2. 0. 1.]
[0. 0. 2. 0. 0.]
[3. 0. 0. 0. 4.]]

câu trả lời hay nhất

  1. Lập danh sách các địa điểm tham quan
  2. Sử dụng vòng lặp while để truy cập từng vị trí, bật vị trí đó ra khỏi danh sách.

Như thế này:

def dfs(x,y,c):
toàn cầu w
locs = [(x,y,c)]
trong khi địa phương:
x,y,c = locs.pop()
w[x][y]=c
cho tôi trong phạm vi (8):
nx = x+dx[i]
ny = y+dy[i]
nếu g[nx][ny] chứ không phải w[nx][ny]:
locs.append((nx, ny, c))

Về tìm kiếm theo chiều sâu không đệ quy của Python, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/44684488/

25 4 0
không gian vũ trụ
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress