字典顺序,生成下一个数字的算法。
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<math.h>
int main() {
int n = 8;
int j = n - 1;
int a[8] = { 4,1,3,2,6,7,8,5 };
while (a[j] > a[j + 1]) {
j = j - 1;
}
printf("<下标%d\n", j);
int k = n - 1;
while (a[j] > a[k]) {
k = k - 1;
}
printf("max下标%d\n", k);
int b = a[j];
a[j] = a[k];
a[k] = b;
int r = n - 1;
int s = j + 1;
while (r > s)
{
int c = a[r];
a[r] = a[s];
a[s] = c;
r--;
s++;
}
printf("按照字典顺序生成排列数字");
for (int e = 0; e < 8; e++) {
printf("%d\t", a[e]);
}
}