我正在尝试制作数独解决方案。为了达到谜题的解决方案,程序将0解释为空槽,然后创建一个长度等于整个谜题中零的数组的数组。从那里,它将数组中的所有值设置为1(任何插槽在数独谜题中可以具有的最小值)。我要做的是从具有最大索引的元素开始模拟数组中的数字增量模式。
例如,具有三个空插槽的拼图将产生一个包含3个元素的数组。然后根据上面提到的模式增加数组:
0 0 0(启动)
1 1 1(设置为可能的值)
1 1 2
1 1 3
1 1 4
1 1 5
1 1 6
1 1 7
1 1 8
1 1 9
1 2 1(跳过1 2 0,因为它将包括0)
1 2 2
等
这是基数10增量的修改形式。而不是0-9,它使用1-9。我如何构建一个以这种方式递增数组的方法?
答案 0 :(得分:1)
这里的基本算法是增加最右边的数字,如果它溢出,则增加左边的数字,依此类推。递归是解决这个问题的一种巧妙方法。我将在伪代码中执行此操作并让您转换为Java
function increment(array, digit)
if (array[digit] < 9)
array[digit] += 1
else if (digit > 0)
array[digit] == 1;
increment(array, digit - 1)
else
you are finished
然后每次使用:increment(array, array.length - 1)