欢迎来到天天文库
浏览记录
ID:40887745
大小:20.82 KB
页数:12页
时间:2019-08-09
《货场车皮的编序问题》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、8货场车皮的编序问题(2人)题目内容(小4号黑体)在火车货场车皮编解场,2条轨道连接到2条侧轨道,形成2个铁路转轨栈,期中左边轨道为车皮入口,编号为A;右边轨道为出口编号为D;2个铁路转轨栈分别编号为C和D入下图所示。编号为a,b,c,┅,的n各车皮依序停放在车皮的入口处,调度室要安排个车皮进出栈次序,使得在出口处个车皮按照预先制定的顺序依次出站。车皮移动时只能按照从左到右的方向移动。a,b,c,┅ADBC铁路转轨栈┅┅实现要求:对于给定的车皮数n,以及各车皮的出站顺序,编程计算最优调度方案,使得移动车皮的次数最少。问题解决要用到堆栈,分别用顺序栈和链栈实现。数据输入
2、:由文件input.txt给出数据。第一行有1个正整数n,表示车皮数;接下来的1行是一个字符串,表示预先确定的车皮的出站顺序。数据输出:将计算得到的最优调度方案输出到文件output.txt,文件的第一行使最少移动次数m,接下来的m行使对于最优方案的m次移动。每次移动用“cXY”的3个字符表示,其中c表示车皮编号,X表示其时栈号,Y表示目标栈号。如果无法调度则输出“NoSolution!”输入文件示例输出文件示例input.txt3abcoutput.txt5cABbABaADbBDcBD#include#includetyped
3、efstruct{charstack[60];inttop;}Stack;intstepsum=0;//总步数voidinitialize(Stack*a)//初始化{a->top=0;}intRead_File(Stack*a,int*len)//读取文件{FILE*fp;intn=0,i=0;fp=fopen("input.txt","r");//打开文件if(fp==NULL){printf("打开文件失败");exit(0);}fscanf(fp,"%d",&n);//读取车皮数printf("车皮数是:%d",n);fscanf(fp,"%s",a-
4、>stack);//读取车皮编号printf("车皮编号:%s",a->stack);for(i=0;a->stack[i]!=' ';i++);if(i!=n)//读取到的车皮编号个数,和数字不相等时{printf("输入的车皮数和对应的车皮编号个数不相等请在input.txt中修改");fclose(fp);exit(0);//读取失败,返回0}a->top=n;*len=n;fclose(fp);return1;}//====================================================================
5、=================================voidok_Write_to_file(chara[][4]){FILE*fp;fp=fopen("output.txt","w");if(fp==NULL){printf("打开写入文件失败");exit(0);}intstep=stepsum,j=0;printf("%d",step);fprintf(fp,"%d",step);for(j=0;j6、;}//=====================================================================================================voidfalse_Write_file(){FILE*fp;fp=fopen("output.txt","w");if(fp==NULL){printf("打开写入文件失败");exit(0);}fprintf(fp,"NoSolution!");fclose(fp);}//=========================================7、============================================================intRank(charrank[],intk)//排序{inti=0,j=0;intmax_min;chartemp;for(;rank[i]!=' ';i++){max_min=i;for(j=i;rank[j]!=' ';j++){if(rank[max_min]rank[j]&&k==0)//由小到大{max_min=
6、;}//=====================================================================================================voidfalse_Write_file(){FILE*fp;fp=fopen("output.txt","w");if(fp==NULL){printf("打开写入文件失败");exit(0);}fprintf(fp,"NoSolution!");fclose(fp);}//=========================================
7、============================================================intRank(charrank[],intk)//排序{inti=0,j=0;intmax_min;chartemp;for(;rank[i]!=' ';i++){max_min=i;for(j=i;rank[j]!=' ';j++){if(rank[max_min]rank[j]&&k==0)//由小到大{max_min=
此文档下载收益归作者所有