给定一个长度为N的数组,其中数组中的每个元素都有X种可能性,返回所有可能的数组

时间:2015-10-20 17:22:40

标签: java recursion

我正在尝试使用Java解决上述问题。考虑使用for循环,但我不知道如果事先不知道X和N,这将如何工作。我试图用递归来解决它但不确定它的外观。已经尝试了几个小时了。非常感谢任何帮助。

示例,如果N = 4且x = 3,则可能的数组为:

[0,0,0,1]
[2,1,0,0]
[1,2,1,1]
[0,2,2,2]

1 个答案:

答案 0 :(得分:0)

首先,所有那些说"使用调试器",这不是关于代码...它是关于理解。 他问方向,我会理解,如果你投票,因为他没有显示他的代码,那个别的东西,你可以写出来......

我的算法就像计数一样,你开始计数直到X(基本上就像在基数X中计算一样),当你到达X时,你将1添加到Array的下一个位置并重置最后一个位置。

所以,据我所知,你不能以正常方式返回少数阵列,所以我假设你想打印它们。
现在,这是一个很好的"代码:
http://pastebin.com/Uqv3fMxg

几点说明:
你不应该把这个功能变成静态的,我是从懒惰中做到的 这不完美,它打印两次[1,0],[2,0]等等。找不到问题,对我来说太晚了,我会尝试再次检查它。

我不是一个评论他的代码的人,我做了一点,但我会解释我能在这里做的一切。

程序从我定义Array的主方法开始,并启动了recurtion方法 停止声明是当我进入N位置时(在阵列中不存在,只有N-1)
参数:数组,我正在计算的数组中的位置以及&#34;模式&#34;,是运行到下一个位置还是只打印此位置的所有数字。< / p>

alreadyHas变量不打印2次。
如果我不能使用它,它将至少打印每个数字2次,它将重做他所做的任何工作,直到他移动到这个位置和每个位置。 很难解释,你可以写0而不是它,看看会发生什么。

所以,我计算到X,每次我打印新的Array并计算每个数字而不是滑动任何我必须在最后一个位置重新计算最后一个不同数字的位置。

在我计算了这个可能的所有可能的数字后,我给它一个值为0并进入下一个位置。

所以,总结一下,你计算数组第一个位置的数字,当你达到最大值时,你在下一个位置添加一个进位并重置正确的位置。

对不起,如果事情不清楚,英语不是我的母语,所以我在解释自己时有困难。
你可以问我任何问题,如果事情不清楚,我会回答,这将是更容易解释的方式。

晚安:)