|
问题如下:
/* 假设有编号1、2、3的三辆列车,顺序进入一个栈式结构的站台,*/
/* 具体输出这3辆车开出站台的所有可能顺序 */
[php]
思路一:
/*如果用栈的后进先出的性质这个思路来解的话,那么有输入序 */
/*列是i,j,k时,并有i<j<k,那么输出序列pi,pj,pk不可能是pj<pk<pi*/
/*如果是这种思路,源程序如下*/
#include <stdio.h>
void changelist(int a[],int t){
int i,temp;
if(t==2){
if(!(a[1]<a[2]&&a[2]<a[0])){
for(i=0;i<3;i++)printf("%d",a);
}
printf("\t");
}
else
for(i=t;i<3;i++){
temp=a[t];a[t]=a;a=temp;
changelist(a,t+1);
temp=a[t];a[t]=a;a=temp;
}
}
int main(void){
int a[3]={1,2,3};
printf("\n");
changelist(a,0);
return 0;
}
[/php]
上面这个方法有个缺憾就是在车增多时,计算量会很大。
[php]思路二:直接生成法(或称模拟法,递归的内容)???这个也是我想请教大家的?[/php] |
|