-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathfloodfill.c
executable file
·66 lines (52 loc) · 946 Bytes
/
floodfill.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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#include "stdio.h"
#define NUM_X 6
#define NUM_Y 6
char arr2d[NUM_Y][NUM_X] = {
1, 1, 0, 0, 0, 0,
1, 1, 0, 0, 0, 0,
0, 1, 0, 0, 0, 0,
0, 1, 0, 0, 0, 0,
0, 1, 1, 1, 0, 0,
0, 0, 0, 0, 0, 0,
};
void fill2d_h(int x, int y, char q, char color)
{
if (x < 0 || x >= NUM_X)
return;
if (y < 0 || y >= NUM_Y)
return;
if (arr2d[y][x] != q)
return;
arr2d[y][x] = color;
fill2d_h(x+1, y , q, color);
fill2d_h(x-1, y , q, color);
fill2d_h(x , y+1, q, color);
fill2d_h(x , y-1, q, color);
}
void fill2d(int x, int y, char color)
{
if (x < 0 || x >= NUM_X)
return;
if (y < 0 || y >= NUM_Y)
return;
fill2d_h(x, y, arr2d[y][x], color);
}
void print_grid()
{
int y, x;
for (y=0; y < NUM_Y; y++) {
for (x=0; x < NUM_X; x++) {
printf("%d", arr2d[y][x]);
}
printf("\n");
}
}
int main (void)
{
printf("Before\n");
print_grid(arr2d);
fill2d(0, 0, 4);
printf("After\n");
print_grid(arr2d);
return 0;
}