我有一个看起来像这样的二维数组:
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
是列号。
感谢您提前提供任何帮助!