142. 填滿圖形

I'm a slow walker, but I never walk backwards.

Task Description
填滿圖形
有一張圖片以 n×n 的二維非負整數陣列 A 表示,A 中的元素不同數字代表不同顏色。往指定位置 (sr,sc) 倒入新顏色newColor,相連且相同顏色的格子都會變成新顏色。以 3×3 舉例如下:
1 0 1
1 1 0
1 0 3
若 (sr,sc)=(1,1) 且 newColor=2,表示與第一列第一行相連且相同顏色的元素都會改成2,因此輸出如下:
2 0 1
2 2 0
2 0 3
請使用此函數原型 void floodFill(int** image, int imageSize, int sr, int sc, int newColor) 完成。

Hint

main.c

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#include <stdio.h>
#include <stdlib.h>
 
void floodFill(int** image, int imageSize, int sr, int sc, int newColor) {
    //add your code
}
 
int main() {
    int n;
    int sr, sc, newColor;
    scanf("%d", & n);
    int** p = NULL;
    p = (int**)malloc(sizeof(int*) * n);
    for (int i = 0; i < n; i++) {
        p[i] = (int*)malloc(sizeof(int) * n);
    }
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
            int tmp;
            scanf("%d", &tmp);
            p[i][j] = tmp;
        }
    }
    scanf("%d", &sr);
    scanf("%d", &sc);
    scanf("%d", &newColor);
    floodFill(p, n, sr, sc, newColor);
 
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
            printf("%d ", p[i][j]);
        }
        printf("\n");
    }
    for (int i = 0; i < n; i++) {
        free(p[i]);
    }
    free(p);
    return 0;
}

Input Format
第一列輸入為 n,第2列至第 n+1 列輸入為 A 中的元素值。最後一列輸入依序為 sr、sc、 newColor。
Note: 0<n≤10、0≤A[i][j]≤255
Sample Input

1
2
3
4
5
6
4
1 0 1 0
1 1 1 1
1 1 2 0
0 0 1 0
1 1 3

Sample Output

1
2
3
4
3 0 3 0
3 3 3 3
3 3 2 0
0 0 1 0

Submit

Login

Testdata Set

Download Testdata