アレイ内の任意のスロットを通過できるアルゴリズムを見つけようとしています。 2D配列(配列のステップが配列の終わりに達すると、配列の先頭に戻ることができると仮定した場合)のように、このような問題は「モジュロ」を叫びます。
いくつかの例を実行すると、アルゴリズムを構築することができます。アレイの列に対して、アルゴリズムを使用すると、[1] [0]インデックスから出発して、あなたの例で、このアルゴリズムを用いて、上記の式に対応する値に差し込む
(currentColumn + numberOfSteps) % sizeOfRow
ように単純です次を得る:
columnIndex = (1+4)%3 = 2
今、あなたは、対応する行の値を見つけるためのアルゴリズムを考え出す必要があります。列値に対応するアルゴリズムは次のようになります
(currentRow + ((currentColumn + numberOfSteps)/sizeOfRow)) % numberOfRows
注このアルゴリズムは、Java床に整数代数を用いて分割した整数を使用したこと。これは、ステップが次の行に流れるかどうかを決定することです(列0に2ステップかかる場合は、同じ行にとどまる必要があります(0 + 2) = 0/3)あなたの例からの値に当てはめるには、次を得る:
rowIndex = 0 + ((1+4)/3)%3 = 0 + 1 = 1
注意あなたが最後のスロットを過ぎて行けばこれらのアルゴリズムは、あなたが戻って配列の先頭にループスルーをすることを前提としていること配列内にあります。一般的に、このような問題に直面した場合は、「モジュロ」と考えて、いくつかの例を見て、動作するアルゴリズムを見つけてください。
これらのアルゴリズムを使用して新しいインデックス値[1] [2]を検索すると、2D配列から対応する値を取得できます。乾杯!
2D配列を1D配列に変換すると、その中の任意の要素を簡単に見つけることができます。 –
何が上向きで、どのようにして15が出力になると思いますか?また、あなたが試したことを私たちに見せてください。 – nullpointer