行と列をA[n,m]持つ2 次元配列と、ランダムに選択されたその配列の要素が与えられます。次にアクセスする要素が になるという点で、配列は円形であると考えてください。nmRA[n-1, m-1]A[0, 0]
element から始めて、各要素に一度だけアクセスし、次の要素に移動する前にR関数を呼び出します。foo()
以下は私の最初の実装ですが、バグがあります。xと の間のどこかの行から開始する0と、その列の からまでのn-1要素にアクセスできないというバグがあります。0x-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;
}
上記の要件を満たすように、このトラバーサルを行うクリーンな方法は何ですか?