有5个元素,其入栈顺序为:A、B、C、D、E,在整个可能的出栈序列中,以元素C为第1个、D为第2个出栈的序列的函数中,无法正确输出。请大家帮忙看看指点一下~感谢Thanks♪(・ω・)ノ
这是我用的第一个办法,也是不行

这是我用的第一个办法,也是不行
入栈调试是正常的,入栈所有函数都能正常输出原序列,但是该排序函数中,数组的值一直是0;不知道哪一步出问题了


有5个元素,其入栈顺序为:A、B、C、D、E,在整个可能的出栈序列中,以元素C为第1个、D为第2个出栈的序列的函数中,无法正确输出。请大家帮忙看看指点一下~感谢Thanks♪(・ω・)ノ
这是我用的第一个办法,也是不行



太乱了,重新写一个
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void swap(char *a, char *b) {
char temp = *a;
*a = *b;
*b = temp;
}
void reverse(char *arr, int start, int end) {
while (start < end) {
swap(&arr[start], &arr[end]);
start++;
end--;
}
}
void enumerate(char *arr, int n) {
int count = 0;
do {
if (arr[2] == 'C' && arr[3] == 'D') {
count++;
printf("%d: ", count);
for (int i = 0; i < n; i++) {
printf("%c ", arr[i]);
}
printf("\n");
}
} while (next_permutation(arr, arr + n));
}
int main() {
char arr[] = {'A', 'B', 'C', 'D', 'E'};
int n = sizeof(arr) / sizeof(char);
enumerate(arr, n);
return 0;
}