Đổi màu một vùng bức tranh
Em hãy viết chương trình yêu cầu nhập vào lần lượt các thông tin sau: - Hai giá trị M và N tương ứng với số dòng và số cột của lưới ô vuông. - Các giá trị màu ở mỗi ô trong lưới ô vuông kích thước M N theo thứ tự hết dòng này đến dòng khác. - Ba giá trị r, c, m lần lượt là toạ độ dòng, toạ độ cột và màu mới của ô muốn đổi màu. In ra màn hình lưới ô vuông sau khi đã đổi màu các ô theo đúng yêu cầu của An.
Bằng cách nhấp vào Đăng nhập, bạn đồng ý Chính sách bảo mật và Điều khoản sử dụng của chúng tôi. Nếu đây không phải máy tính của bạn, để đảm bảo an toàn, hãy sử dụng Cửa sổ riêng tư (Tab ẩn danh) để đăng nhập (New Private Window / New Incognito Window).
Bài toán yêu cầu ta nhập vào một lưới ô vuông có kích thước M×NM \times NM×N, nhập vào màu sắc của các ô và sau đó thay đổi màu của một ô và các ô liên thông cùng màu với nó, chúng ta sẽ sử dụng một kỹ thuật tương tự như "flood fill" trong đồ họa máy tính:
Chương trình như sau:
def flood_fill(grid, r, c, new_color):
rows = len(grid)
cols = len(grid[0])
original_color = grid[r][c]
if original_color == new_color:
return grid
def dfs(x, y):
if x < 0 or x >= rows or y < 0 or y >= cols:
return
if grid[x][y] != original_color:
return
grid[x][y] = new_color
# Go to neighboring cells
dfs(x + 1, y)
dfs(x - 1, y)
dfs(x, y + 1)
dfs(x, y - 1)
dfs(r, c)
return grid
# Input the dimensions of the grid
M = int(input("Nhập số dòng M: "))
N = int(input("Nhập số cột N: "))
# Input the grid values
print("Nhập giá trị màu của từng ô trong lưới:")
grid = []
for i in range(M):
row = list(map(int, input().split()))
grid.append(row)
# Input the row, column and new color
r = int(input("Nhập tọa độ dòng r: "))
c = int(input("Nhập tọa độ cột c: "))
new_color = int(input("Nhập màu mới m: "))
# Perform the flood fill
updated_grid = flood_fill(grid, r, c, new_color)
# Print the updated grid
print("Lưới sau khi đổi màu:")
for row in updated_grid:
print(" ".join(map(str, row)))
Tham gia Cộng đồng Lazi trên các mạng xã hội | |
Fanpage: | https://www.fb.com/lazi.vn |
Group: | https://www.fb.com/groups/lazi.vn |
Kênh FB: | https://m.me/j/AbY8WMG2VhCvgIcB |
LaziGo: | https://go.lazi.vn/join/lazigo |
Discord: | https://discord.gg/4vkBe6wJuU |
Youtube: | https://www.youtube.com/@lazi-vn |
Tiktok: | https://www.tiktok.com/@lazi.vn |
Hôm nay bạn thế nào? Hãy nhấp vào một lựa chọn, nếu may mắn bạn sẽ được tặng 50.000 xu từ Lazi
Vui | Buồn | Bình thường |