A[n,m]
我们得到一个包含n
行和列的二维数组,以及m
随机选择的该数组的一个元素R
。将数组视为循环的,因为当我们访问A[n-1, m-1]
下一个元素时,我们将访问A[0, 0]
.
从 element 开始R
,我们希望只访问每个元素一次并foo()
在移动到下一个元素之前调用函数。
以下是我的第一个实现,但有一个错误。错误是,如果我们从 和 之间的某处开始,x
我们将不会访问该列中的元素。0
n-1
0
x-1
// Init - pretend rand() always returns valid index in range
curr_row = rand();
curr_col = rand();
// Look at each column once
for (int i = 0; i < m; ++i)
{
for (; curr_row < n; ++curr_row)
{
foo(A[curr_row][curr_col]);
}
curr_row = 0;
curr_col = (curr_col + 1) % m;
}
为了满足上述要求,进行这种遍历的干净方法是什么?