引言:
编号为1-n的n辆列车进栈,要获得所有正确序列,则可以先通过获得n辆列车的全排列,然后对每个排列进行正确性检验,
即可以获得所有正确序列。正确性是基于引理,对于一个正确的出栈序列,如果有k<i<j,且a[j]<a[k],则必有a[i]<a[k],简单来
说就是要满足小于边界的所有数必须正序排列。
本程序中,使用循环移位方法获得全排列。循环移位的思路是给定一个序列1 2 3 4 .... n。递归层次多了很难表达,此处
用1234的思维导图演示过程。(图中所有连线均为双箭头,第一层递归顺序是1234->2134->1324->3241->2413->4132->1324)
#include <stdio.h>
#include <malloc.h>
#include <string.h>
void Permutation(int n);
void Recursion(int *a,int n,int k);
void Print(int