这段代码的主要原理是通过一个已经有的排列,推断出该排列在字典序中的下一个排列。操作方法很简单:假设当前排列中的第 i 个的值为 data[i] ,那么就倒着寻找第一个可以使 data[i] 变大的下标, 设为k,令 data[k] 变成一个更大的数字,这样就可以使得字典序增大。同时为了保证这是在字典序上直接与当前排列相邻的排列,我们需要让 data[k+1..m] 这部分构成的序列字典序最小(在不修
改
data[1..k-1] 的情况下)。所以我们需要重新对其值进行分配,也就是代码中
if(flag) 分支的部
1. A。
2. D。
3. A。
4. A。
5. D。