【发布时间】:2011-08-23 19:31:41
【问题描述】:
我有一个如下所示的二维数组:
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 是列数。
提前感谢您的帮助!
【问题讨论】:
标签: recursion multidimensional-array backtracking contiguous