У меня есть двумерный массив, который выглядит так:
1 1 0 0 1
1 0 1 1 0
0 0 1 1 0
1 1 0 1 1
0 0 1 1 1
Я пытаюсь найти способ определить самую длинную непрерывную цепочку из 1, идущих либо поперек, либо вниз. В этом случае он начинается со столбца 4, строки 2 и имеет длину 4, спускаясь вниз.
Я думал об использовании рекурсии, но у меня возникают некоторые проблемы с отслеживанием позиции, особенно при встрече с 0.
Пока у меня есть что-то вроде этого (только для проверки):
main() {
...
for(i = 0; i < n; i++)
for(j = 0; j < n; j++)
if (G[i][j] == 1) {
CheckAcross(i, j, n);
}
...
}
void CheckAcross (int i, int j, int n) {
if (i < 0 || i >= n || j < 0 || j >= n) return; // outside of grid
if (G[i][j] == 0 ) return; //0 encountered
G[i][j] = WordCount + 1;
CheckAcross(i, j + 1, n);
}
где G[][]
— двумерный массив, содержащий 1 и 0, n
— количество строк/столбцов, i
— номер строки, а j
— номер столбца.
Спасибо за любую помощь заранее!