gpt4 book ai didi

algorithm - 没有得到正确的预期输出

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:25:08 26 4
gpt4 key购买 nike

给定一个数字 d 和一个数字 n。我必须打印所有长度 n 的组合,这样第一个元素是 d 并且所有其他元素都是与前一个相距 1 个距离。

例如对于输入 d=4 n=3

输出

4 3 2
4 3 4
4 5 4
4 5 6

我写了下面的代码,但它每行显示两次如下 -

4 3 2
4 3 2
4 3 4
4 3 4
4 5 4
4 5 4
4 5 6
4 5 6

代码-

private static void printNumbers(int d, int n, String comb) {
if(n == 0) {
System.out.println(comb);
return;
}

printNumbers(d-1, n-1, comb+d+"\t");
printNumbers(d+1, n-1, comb+d+"\t");
}

方法调用看起来像 -

 printNumbers(4,3,"");

我尝试调试但无法提出没有重复输出的测试条件。我知道我们可以使用 Set 或类似的 DS 来避免重复,但我想知道是否有不使用额外空间的解决方案。

最佳答案

你的问题是,当 n == 1 时,你调用:

printNumbers(d-1, 0, comb+d+"\t");
printNumbers(d+1, 0, comb+d+"\t");

这将打印字符串两次。

您可以通过更改停止标准轻松解决此问题:

private static void printNumbers(int d, int n, String comb) {
if(n == 1) {
// ^ change here
System.out.println(comb + d);
// ^ change here
return;
}

printNumbers(d-1, n-1, comb+d+"\t");
printNumbers(d+1, n-1, comb+d+"\t");
}

关于algorithm - 没有得到正确的预期输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26882413/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com