1、1.5 走迷宫(maze.pas)*【问题描述】有一个 m * n 格的迷宫(表示有 m 行、n 列) ,其中有可走的也有不可走的,如果用 1表示可以走,0 表示不可以走,文件读入这 m * n 个数据和起始点、结束点(起始点和结束点都是用两个数据来描述的,分别表示这个点的行号和列号) 。现在要你编程找出所有可行的道路,要求所走的路中没有重复的点,走时只能是上下左右四个方向(搜索顺寻:左上右下) 。如果一条路都不可行,则输出相应信息(用-1 表示无路) 。【输入】第一行是两个数据 m,n (1”表示方向。如果没有一条可行的路则输出-1。【样例】maze,in5 61 0 0 1 0 11 1
2、1 1 1 10 0 1 1 1 01 1 1 1 1 01 1 1 0 1 11 15 6Maze.out(1,1)-(2,1)-(2,2)-(2,3)-(2,4)-(2,5)-(3,5)-(3,4)-(3,3)-(4,3)-(4,4)-(4,5)-(5,5)-(5,6)(1,1)-(2,1)-(2,2)-(2,3)-(2,4)-(2,5)-(3,5)-(3,4)-(4,4)-(4,5)-(5,5)-(5,6)(1,1)-(2,1)-(2,2)-(2,3)-(2,4)-(2,5)-(3,5)-(4,5)-(5,5)-(5,6)(1,1)-(2,1)-(2,2)-(2,3)-(2,4)-(3,
3、4)-(3,3)-(4,3)-(4,4)-(4,5)-(5,5)-(5,6)(1,1)-(2,1)-(2,2)-(2,3)-(2,4)-(3,4)-(3,5)-(4,5)-(5,5)-(5,6)(1,1)-(2,1)-(2,2)-(2,3)-(2,4)-(3,4)-(4,4)-(4,5)-(5,5)-(5,6)(1,1)-(2,1)-(2,2)-(2,3)-(3,3)-(3,4)-(2,4)-(2,5)-(3,5)-(4,5)-(5,5)-(5,6)(1,1)-(2,1)-(2,2)-(2,3)-(3,3)-(3,4)-(3,5)-(4,5)-(5,5)-(5,6)(1,1)-(2,1)-(2
4、,2)-(2,3)-(3,3)-(3,4)-(4,4)-(4,5)-(5,5)-(5,6)(1,1)-(2,1)-(2,2)-(2,3)-(3,3)-(4,3)-(4,4)-(3,4)-(2,4)-(2,5)-(3,5)-(4,5)-(5,5)-(5,6)(1,1)-(2,1)-(2,2)-(2,3)-(3,3)-(4,3)-(4,4)-(3,4)-(3,5)-(4,5)-(5,5)-(5,6)(1,1)-(2,1)-(2,2)-(2,3)-(3,3)-(4,3)-(4,4)-(4,5)-(5,5)-(5,6)1.6 单向双轨道(track.pas)*【问题描述】如图 1-1,某火车站有 B,
5、C 两个调度站,左边入口 A 处有 n 辆火车等待进站(从左到右以 a、b、c、d 编号) ,右边是出口 D,规定在这一段,火车从 A 进入经过 B、C 只能从左向右单向开,并且 B、C 调度站不限定所能停放的车辆数。图 1 - 1从文件输入 n 及 n 个小写字母的一个排列,该排列表示火车在出口 D 处形成的从左到右的火车编号序列。输出为一系列操作过程,每一行形如“h L R”的字母序列,其中 h 为火车编号,L 为 h 车原先所在位置(位置都以 A、B、C、D 表示) ,R 为新位置。或者输出NO表示不能完成这样的调度。【输入】一个数 n(1n27及由 n 个小写字母组成的字符串。【输出】
6、可以调度则输出最短的调度序列,不可以调度时则输出NO 。【样例】track,in3cbatrack.outc A Bb A C a A Db C D c B D1.7 组合的输出(compages.pas)【问题描述】排列与组合是常用的数学方法,其中组合就是从 n 个元素中抽出 r 个元素(不分顺序且 r=n ,我们可以简单地将 n 个元素理解为自然数 1,2,n,从中任取 r 个数。现要求你不用递归的方法输出所有组合。例如 n=5,r=3,所有组合为:1 2 3 1 2 4 1 2 5 1 3 4 1 3 5 1 4 5 2 3 4 2 3 5 2 4 5 3 4 5【输入】一行两个自然数 n、r(1n21, r=n 。【输出】所有的组合,每一个组合占一行且其中的元素按由小到大的顺序排列,每个元素占三个字符的位置,所有的组合也按字典顺序。【样例】入口 出口A B C Dcompages,in5 3compages.out1 2 31 2 41 2 51 3 41 3 51 4 52 3 42 3 52 4 53 4 5