Menu
CoddyTech

Flood Fill

MudahGrafpython iconjava iconcpp iconc iconjs icon+10

Gambar adalah grid bilangan bulat, dengan setiap bilangan menunjukkan warna satu piksel. Kamu mendapatkan gambar dalam bentuk list baris, piksel awal pada baris sr dan kolom sc, serta color baru. Warnai ulang wilayah yang memuat piksel awal: setiap piksel yang warnanya sama dengan piksel awal dan dapat kamu jangkau darinya dengan melangkah ke atas, bawah, kiri, atau kanan melalui piksel dengan warna yang sama. Kembalikan gambar setelah diwarnai ulang.

Fungsi

floodFill(image: integer-2d-array, sr: integer, sc: integer, color: integer) → integer-2d-array
imageinteger-2d-array
gambar sebagai list yang berisi baris, satu angka untuk setiap piksel
srinteger
baris piksel awal, dihitung mulai dari 0
scinteger
kolom piksel awal, dihitung dari 0
colorinteger
warna baru untuk wilayah tersebut
Mengembalikaninteger-2d-array
gambar setelah wilayah digambar ulang

Batasan

  • 1 ≤ image.length ≤ 80
  • 1 ≤ image[i].length ≤ 80
  • Setiap baris memiliki panjang yang sama.
  • 0 ≤ image[i][j], color ≤ 65535
  • 0 ≤ sr < image.length dan 0 ≤ sc < image[0].length

Contoh

Input
image = [[1, 1, 0], [1, 0, 1], [1, 1, 1]]sr = 0sc = 0color = 5
Output
[[5, 5, 0], [5, 0, 5], [5, 5, 5]]
Penjelasan
Titik awal memiliki warna 1. Ketujuh angka 1 terhubung ke titik awal melalui angka 1 yang berbagi sisi, ke bawah sepanjang kolom kiri, ke kanan sepanjang baris bawah, lalu ke atas sepanjang tepi kanan, sehingga semuanya menjadi 5. Kedua angka 0 tetap memiliki warnanya.
challenge icon

Pertanyaan lanjutan

Bagaimana solusi kamu akan berubah jika piksel yang hanya bersentuhan di sudut juga dianggap terhubung?

Reset kode
def floodFill(image, sr, sc, color):
    # Tulis kodemu di sini

Tes #1

Tes #2

Tes #3

Argumen

image = [[1, 1, 0], [1, 0, 1], [1, 1, 1]]
sr = 0
sc = 0
color = 5

Output yang diharapkan

[[5, 5, 0], [5, 0, 5], [5, 5, 5]]