| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2006 人关注过本帖
标题:车厢调度--递归
只看楼主 加入收藏
妍清舞
Rank: 1
等 级:新手上路
帖 子:121
专家分:0
注 册:2007-11-12
收藏
 问题点数:0 回复次数:4 
车厢调度--递归
车厢调度问题用递归怎么实现,要求输出各种可能的情况。麻烦各位大哥大姐解释一下,不需要太详细的算法,只要解释如何用递归实现就行。谢谢!
搜索更多相关主题的帖子: 递归 车厢 
2008-03-28 23:12
renmingjiang
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2008-3-26
收藏
得分:0 
你能吧“车厢调度”仔细地描述一下吗?
2008-03-28 23:32
妍清舞
Rank: 1
等 级:新手上路
帖 子:121
专家分:0
注 册:2007-11-12
收藏
得分:0 
问题描述:
假设停在铁路调度站入口处的车厢序列的编号依次为1,2,3,...n设计一个程序,求 出所有可能由此输出的长度为n的车厢序列
基本要求: 用栈的顺序存储结构实现基本操作。 该问题要用递归的思想。
假设n=3,则有:3 2 1;2 3 1;2 1 3;1 2 3;1 3 2;五种可能,即每一个编号均有“入”和“出”两种状态。
2008-03-29 11:15
妍清舞
Rank: 1
等 级:新手上路
帖 子:121
专家分:0
注 册:2007-11-12
收藏
得分:0 
以下是从网上找到的递归函数,但看不太明白,麻烦各位大哥大姐帮忙分析一下,谢谢!
void Attemper(int pos,int path[],int num){
  //车厢调度递归函数,当前处理位置pos的元素
    int i,m;
    //SqStack *S;
    //InitStack(S);
    if(pos<c_num){  
    Push(pos+1);   
    Attemper(pos+1,path,num);   
    Pop();   
    }   
    if(!Emptys()){
    m=Pop();   
    path[num]=m;   
    num++;   
    Attemper(pos,path,num);   
    Push(m);   
    }
    if(pos==c_num&&Emptys()){
    for(i=0;i<num;i++)printf("%2d",path[i]);   
    printf("\n");   
    }
}//Attemper

还有如何改为先输出1 2 3 最后输出3 2 1
谢谢!
2008-04-06 23:03
zhaoyg
Rank: 1
等 级:新手上路
帖 子:328
专家分:0
注 册:2006-8-28
收藏
得分:0 
这个题我做过.
个人认为,若两个车厢号不是紧挨的,那么后一个车厢不可能排在前一个车厢的前面.若编号以此为0,1,2,3,那么例如当n=3时,不可能存在3021这样的序列

麻雀飞上枝头变凤凰,而菜鸟的我飞上枝头却感冒了,为什么我的脑袋如此的不管用呢。
2008-04-07 00:04
快速回复:车厢调度--递归
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.056010 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved