diberikan suatu grid n x m, cari area kumpulan "o" terbesar yang terhubung dari sisi (kanan/kiri/atas/bawah). "x" tidak bisa dilewatin.
input
4 4
x o x x
o o x o
o o x x
x x o o
output
5
ini kodingannya, tp jdny infinite loop, salahnya di mana yaa?
int X, Y;
int check[10][10]={0};
int answer=0;
int num = 0;
void recursive(int y,char map[10][10],int x) {
if (x < X) {
if (map[y][x] == 'o') {
if (check[y][x] == 0) {
check[y][x] == 1;
num++;
if (check[y][x + 1] == 0) {
recursive(y, map, x + 1);
}
if (check[y][x - 1] == 0) {
recursive(y, map, x - 1);
}
if (check[y + 1][x] == 0) {
recursive(y+1, map, x );
}
if (check[y - 1][x ] == 0) {
recursive(y-1, map, x );
}
if (check[y][x + 1] == 1 && check[y][x - 1] == 1 && check[y - 1][x] == 1 && check[y + 1][x] == 1) {
if (answer < num) {
answer = num;
cout << answer;
num = 0;
}
}
}
}
else {
recursive(y, map, x + 1);
}
}
else {
recursive(y + 1, map, 0);
}
}
// 2 = 121, 3 = 1213121
int main() {
char map[10][10];
cin >> X>>Y;
for (int i = 0; i < Y; i++) {
for (int j = 0; j < X; j++) {
cin >> map[i][j];
if (map[i][j] == 'x') {
check[i][j] = 1;
}
}
}
recursive(0, map, 0);
}
0 jempol