如何在堆栈中的索引处存储多个值?

时间:2017-01-06 22:18:01

标签: java stack

我正在尝试为我的数独求解器更新我的有效性检查器,但我不确定如何以我想要的方式使用Stacks。我已经知道Stacks的基础知识,但我试图在一个索引处存储多个值。

我的数独板存储在一个3D数组中,因此在我的堆栈中,我需要存储值,找到值的子广场,找到的行和找到的列。

假设我的数组是这样的:

 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 个答案:

答案 0 :(得分:1)

创建一个封装值组的对象。该类应标记字段private并提供getter和setter,但为了简洁,我将其遗漏了。 我也不知道数据的类型,我假设int

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

然后你将Stack<Move>

然后你可以将Move添加到堆栈中:

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