2017-01-06 10 views
1

私はSudokuソルバーの有効性チェッカーをアップアップしようとしていますが、私は好きな方法でStacksの使い方を本当に分かりません。私はすでにStacksの基本について知っていますが、1つのインデックスに複数の値を格納しようとしています。スタック内のインデックスに複数の値を格納する方法は?

私の数独ボードは私のスタック内のI値を格納する必要があるので、値が見つかった場合、サブ正方形、それが中に発見されたと列は、それが中に発見された行、3次元配列に格納されている。

私の配列がこれだったとします:

int[][][] solved = {{{5,3,4},{6,7,2},{1,9,8}}, //Let's say I want to check if 5 is in the right position. 
        {{6,7,8},{1,9,5},{3,4,2}}, 
        {{9,1,2},{3,4,8},{5,6,7}}, 
        {{8,5,9},{4,2,6},{7,1,3}}, 
        {{7,6,1},{8,5,3},{9,2,4}}, 
        {{4,2,3},{7,9,1},{8,5,6}}, 
        {{9,6,1},{2,8,7},{3,4,5}}, 
        {{5,3,7},{4,1,9},{2,8,6}}, 
        {{2,8,4},{6,3,5},{1,7,9}}}; 

情報は[5,0,0,0]です。

私はすでに取り組んでチェッカーを持っていますが、今、私はStackに単一のインデックスで複数の値を格納する方法を知っておく必要があります。この方法は、それが間違った位置にある場合、私はそれをポップアップし、別の番号を試してみることができます。

洞察が得られるでしょう。

+1

をint配列を使用するか、カスタムクラスを作成します。

public class Move { public int value; public int row; public int subSquare; } 

次に、あなたは、あなたがスタックにMove秒を追加することができますStack<Move>

を持つことになります。 – shmosel

答えて

1

値のグループをカプセル化するオブジェクトを作成します。クラスはフィールドprivateをマークし、ゲッターとセッターを提供しますが、私は簡潔にするためにそれを残してきたはずです。 データの種類もわからないので、私はintと仮定しています。どちらの

Stack<Move> stack = ... 
Move move = new Move(); 
move.value = 1; 
move.row = 2; 
move.subSquare = 3; 
stack.push(move); 
+0

私の文法を編集する、大丈夫。開いているブレースを同じ行に移動するコードを編集しますか?冒涜 –

+0

ありがとう!!!!!! – JAVANOOB

関連する問題