我有一个2维数组,它看起来像这样:确定连续重复在二维阵列[C]
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
是行/列的数目的2维阵列,i
是行数和j
是列号。
感谢您提前给予任何帮助!
如果你想坚持自己的解决方案,你可以很容易地交换行和列,只需简单地交换索引,然后完成实现。 – bdares 2011-05-12 04:33:58