12. The Matrix
Здравейте! Ще бъда много благодарен ако някой хвърли едно рамо с примерен код за следната задача:
https://judge.softuni.bg/Contests/Compete/Index/1460#11
Благодаря предварително!
Здравейте! Ще бъда много благодарен ако някой хвърли едно рамо с примерен код за следната задача:
https://judge.softuni.bg/Contests/Compete/Index/1460#11
Благодаря предварително!
Примерно решение на задачата с използване на рекурсия и Depth-first search (DFS).
Работата се извършва от този статичен метод:
private static void fill(char[][] matrix, int row, int col, char fillChar, char startChar) {
if (matrix[row][col] != startChar) {
return; // recursion current path ends when char at current position is not startChar
}
matrix[row][col] = fillChar;
if (row + 1 < matrix.length) { // up
fill(matrix, row + 1, col, fillChar, startChar); // recursion
}
if (row - 1 >= 0) { // down
fill(matrix, row - 1, col, fillChar, startChar); // recursion
}
if (col + 1 < matrix[row].length) { // left
fill(matrix, row, col + 1, fillChar, startChar); // recursion
}
if (col - 1 >= 0) { // right
fill(matrix, row, col - 1, fillChar, startChar); // recursion
}
}
Ако нямате предишен опит с рекурсивни функции и алгоритми, може да Ви е доста трудно да осмислите какво точно се случва и как работи, но с повече дебъгване и четене по темата, ще успеете.
Благодаря много!