行と列をA[n,m]
持つ2 次元配列と、ランダムに選択されたその配列の要素が与えられます。次にアクセスする要素が になるという点で、配列は円形であると考えてください。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;
}
上記の要件を満たすように、このトラバーサルを行うクリーンな方法は何ですか?