给出了以下算法,我们应该用java写出来。但是,当我尝试逐行理解时,会感到困惑,尤其是以下部分:
A[k+1:N-1] = S 中的值升序排列
据我了解,该套装在任何时候都只有 1 个号码。A[k+1:N-1]
当集合只有 1 个数字时,我们如何替换?
0
让 A 是一个按升序排列的整数序列N-1
(假设它是一个 的数组int[N]
)。
next_permutation(A):
k = N-1
S = { }
while k >= 0:
if S contains a value larger than A[k]:
v = the smallest member of S that is larger than A[k]
remove v from S
insert A[k] in S
A[k] = v
A[k+1:N-1] = the values in S in ascending order.
return true
else:
insert A[k] in S
k -= 1
return false