У меня есть двумерный массив, который выглядит следующим образом:
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
Я пытаюсь найти способ определить самую длинную непрерывную цепочку единиц, идущую либо поперек, либо вниз. В этом случае он начинается в столбце 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
- номер столбца.
Спасибо за любую помощь заранее!