A[n,m]我们得到一个包含n行和列的二维数组,以及m随机选择的该数组的一个元素R。将数组视为循环的,因为当我们访问A[n-1, m-1]下一个元素时,我们将访问A[0, 0].
从 element 开始R,我们希望只访问每个元素一次并foo()在移动到下一个元素之前调用函数。
以下是我的第一个实现,但有一个错误。错误是,如果我们从 和 之间的某处开始,x我们将不会访问该列中的元素。0n-10x-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;
}
为了满足上述要求,进行这种遍历的干净方法是什么?