我正在尝试编写一个算法,该算法可以找到Sudoku板中给定部分填充的解决方案的数量。即给予
"1 6 4 0 0 0 0 0 2",
"2 0 0 4 0 3 9 1 0",
"0 0 5 0 8 0 4 0 7",
"0 9 0 0 0 6 5 0 0",
"5 0 0 1 0 2 0 0 8",
"0 0 8 9 0 0 0 3 0",
"8 0 9 0 4 0 2 0 0",
"0 7 3 5 0 9 0 0 1",
"4 0 0 0 0 0 6 7 9"
其中0表示空白点。我想创建3个单独的集合数组,每个数组在每列,行和3x3平方中。我正在尝试宣言:
horizontal = new HashSet<Integer>[9];
前面声明了私有HashSet [] horizontal,但这不起作用。什么是正确的声明或者我不能声明一个集合数组?
答案 0 :(得分:1)
问题是类型参数。您无法在Java中创建通用数组。您可以删除类型参数,它将起作用,但您应该收到有关未选中操作的警告。
答案 1 :(得分:1)
你可以试试这个:
horizontal = new ArrayList<HashMap<Integer>>();
使用horizontal.get(1);
访问它,您可以像处理普通数组一样对待它。正如@ user599152所说,你无法创建通用数组。所以你需要弄清楚另一种方式。列表可能是你最好的选择。
答案 2 :(得分:0)
数组是一种存储数据的奇怪方法。 2d阵列或2d阵列的2d阵列可能是更直观的建模方式。可能一些自定义类(“SudokuCube”)的二维数组也可能比一组数组更好。