数字交换错误的例子

时间:2016-12-08 21:02:44

标签: algorithm

swap digit problem

由于这些例子,这个问题让我头脑发抖。

如果我有:

38276

然后下一个最大的是

87632

但是问题指出它是下一个最大的38627

我不明白输出应该是什么?

3 个答案:

答案 0 :(得分:1)

38276< 38627< 87632

所以你对87632的建议不可能是次大的。正如链接问题的评论部分所示,请查看C ++ next_permute。

如果有帮助,请将此视为下一个按字母顺序排列的解决方案。即如果你有abc,(下一个最大的)下一个字母顺序将是acb。

答案 1 :(得分:1)

问题是要找到下一个最高数字,而不是您当前正在考虑的最高数字。

如果初始号码n38276,则下一个最高号码m将为38627,因为没有号码k可以由初始数字,例如n < k < m

答案 2 :(得分:1)

下一个最高的数字肯定是38627而不是87632。使用强力方法,您可以找到数字的所有排列,然后对其进行排序。相当于c ++中的逻辑是next_permutation函数