题目描述
排列问题
算法1
使用next_permutation函数
算法2
手写next_permutation函数
从后往前 找第一个拐点,接着从拐点后找出比大于拐点且最小的数 将其与拐点交换,并将拐点后的数字逆序即可
C++ 代码
int k = n;
while(w[k - 1] > w[k]) k--;
int t = k;
while(w[t + 1] > w[k - 1]) t++;
swap(w[k -1], w[t]);
reverse(w + k, w + n + 1);