Câu hỏi:
27/10/2026 5
Đổ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
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.

Trả lời:
Giải bởi Vietjack
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)))
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)))
CÂU HỎI HOT CÙNG CHỦ ĐỀ
Câu 1:
Kí pháp nghịch đảo Ba Lan và phương pháp tính giá trị của biểu thức toán học
Hãy viết chương trình yêu cầu nhập vào một kí pháp nghịch đảo Ba Lan dưới dạng một xâu kí tự chỉ bao gồm: năm toán tử cộng, trừ, nhân, chia, luỹ thừa (+, -,*, /, "), các toán hạng đều chỉ là các số nguyên có một chữ số từ 0 đến 9. Sau đó, tính giá trị của kí pháp này và in kết quả ra màn hình.
Kí pháp nghịch đảo Ba Lan và phương pháp tính giá trị của biểu thức toán học
Hãy viết chương trình yêu cầu nhập vào một kí pháp nghịch đảo Ba Lan dưới dạng một xâu kí tự chỉ bao gồm: năm toán tử cộng, trừ, nhân, chia, luỹ thừa (+, -,*, /, "), các toán hạng đều chỉ là các số nguyên có một chữ số từ 0 đến 9. Sau đó, tính giá trị của kí pháp này và in kết quả ra màn hình.
Câu 2:
Xây dựng ứng dụng kiểm tra lỗi cú pháp
a) Em hãy viết chương trình nhập vào một xâu kí tự chỉ gồm các dấu mở ngoặc và đóng ngoặc sau [, ], {, }, (, ). Sau đó, kiểm tra xem xâu kí tự đó có cân bằng hay không. In ra màn hình thông báo “Cân bằng” nếu xâu đó là cân bằng, ngược lại in ra “Không cân bằng”.
b) Mở rộng chương trình ở câu a): đọc tập có tên test.py chứa chương trình viết bằng ngôn ngữ Python, và kiểm tra xem chương trình có lỗi cú pháp về thứ tự xuất hiện của các cặp ngoặc [, ], {, }, (, ) hay không. In ra màn hình thông báo “Không có lỗi” nếu chương trình không có lỗi về các cặp ngoặc này, ngược lại in ra “Có lỗi cú pháp”.
Xây dựng ứng dụng kiểm tra lỗi cú pháp
a) Em hãy viết chương trình nhập vào một xâu kí tự chỉ gồm các dấu mở ngoặc và đóng ngoặc sau [, ], {, }, (, ). Sau đó, kiểm tra xem xâu kí tự đó có cân bằng hay không. In ra màn hình thông báo “Cân bằng” nếu xâu đó là cân bằng, ngược lại in ra “Không cân bằng”.
b) Mở rộng chương trình ở câu a): đọc tập có tên test.py chứa chương trình viết bằng ngôn ngữ Python, và kiểm tra xem chương trình có lỗi cú pháp về thứ tự xuất hiện của các cặp ngoặc [, ], {, }, (, ) hay không. In ra màn hình thông báo “Không có lỗi” nếu chương trình không có lỗi về các cặp ngoặc này, ngược lại in ra “Có lỗi cú pháp”.
Câu hỏi mới nhất
Xem thêm »-
-
-
-
Trong CSDL QL_ThuVien, hãy xác định khóa chính của bảng MƯỢN SÁCH sau. Biết rằng trong một ngày quy định không được mượn một cuốn sách nhiều lần.
Số thẻ Mã số sách Ngày mượn Ngày trả TV-02
TO-012
5/9/2015
30/9/2015
TV-04
TN-103
12/9/2015
15/9/2015
TV-02
TN-102
24/9/2015
5/10/2015
TV-02
TO-012
5/10/2015
...
...
...
...
-
-
-
-
-
-
