我正在尝试为我的数独求解器更新我的有效性检查器,但我不确定如何以我想要的方式使用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
的单个索引处存储多个值。这样,如果它处于错误的位置,我可以将其弹出并尝试不同的数字。
任何见解都将受到赞赏!
答案 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);