像数字一样增加数组的元素

时间:2015-01-14 21:35:31

标签: java arrays loops

我正在尝试制作数独解决方案。为了达到谜题的解决方案,程序将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。我如何构建一个以这种方式递增数组的方法?

1 个答案:

答案 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)

进行调用