题目内容:编号为1,2,3,4的4列火车通过一个栈式的列车调度站,可能得到的调度结果有哪 些?如果有n列火车通过调度站,设计一个算法,输出所有可能的调度结果。
题目分析:主要写出后面一句的算法,这样前面一个问题自然可以解决。用栈调度图示如下
在任意一个时刻我们可以选择进栈,也可以选择出栈。我们以栈为对象,每一步我们可以进栈或出栈,所以我们可以画出如下这幅图:
所以我们可以设计一个小小的递归带实现调度,我设计的程序代码如下:
#include<stdio.h>
int a[100];//调度栈
typedef struct {
int b[100];//出栈数组
int size;
}queue;
queue c;
void f(int n,int top=0,int i=0,int z=1)//n为还有多少火车未进栈,top为栈顶下标,i为出栈元素插入位置,z为进栈火车编号
{
int temp[100] = {};//记忆数组(递归过