Đổi màu một vùng bức tranh trang 28 Chuyên đề Tin học 12

Dự án 3 trang 28 Chuyên đề Tin học 12: Đổ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. 

Đổi màu một vùng bức tranh trang 28 Chuyên đề Tin học 12

Lời giải:

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)))

Lời giải bài tập Chuyên đề Tin 12 Bài 4: Dự án học tập: Xây dựng chương trình sử dụng kiểu dữ liệu hàng đợi và ngăn xếp hay, chi tiết khác:

Xem thêm lời giải bài tập Chuyên đề học tập Tin học 12 Cánh diều hay, chi tiết khác:

Xem thêm các tài liệu học tốt lớp 12 hay khác:


Giải bài tập lớp 12 sách mới các môn học