当前位置:文档之家› 线性表练习题

线性表练习题

一、火车出栈序列
(train.pas)
【题目描述】
输入n(n列火车),输出火车出栈的所有可能顺序。

【输入样例】
3
【输出样例】
3 2 1
2 3 1
2 1 3
1 3 2
1 2 3
【数据规模】
3<=n<=12
二、括号匹配
(LongestRegularBracketsSequence.pas)
【题目描述】
对一个由(,),[,]括号组成的字符串,求出其中最长的括号匹配子串。

具体来说,满足如下条件的字符串称为括号匹配的字符串:1.(),[]是括号匹配的字符串
2.若A是括号匹配的串,则(A),[A]是括号匹配的字符串
3.若A,B是括号匹配的字符串,则AB也是括号匹配的字符串。

例如,(),[],([]),()()都是括号匹配的字符串,而][,[()],(]则不是。

字符串A的子串是指由A中连续若干个字符组成的字符串。

例如:A,B,C,ABC,CAB,ABCABC都是ABCABC的子串空串是任何字符串的子串。

【输入格式】
输入一行,为一个仅由()[]组成的非空字符串。

【输出格式】
输入也仅有一行,为最长的括号匹配子串。

若有相同长度的子串,
输出位置靠前的子串。

【数据规模】
对20%的数据,字符串长度<=100;
对50%的数据,字符串长度<=10,000;
对100%的数据,字符串长度<=1,000,000;
三、马的最短步数
(horse.pas)
【题目描述】
求马在棋盘上从某个起点到某个终点的最少步数。

【输入格式】
第一行,n,m,表示棋盘有n行m列;(2<n<=1000 2<=m<=1000) 第二行,x1,y1,x2,y2,表示马的起点位于第x1行、y1列,终点是第x2行、y2列。

(1<=x1,x2<=n 2<=y1,y2<=m)
【输出格式】
一个整数,即最少步数。

【输入样例】:
2 3
1 1
2 3
【输出样例】:
1
四、细胞数目
(cell.pas)
【题目描述】
一矩形阵列由数字0到9组成,数字1到9代表细胞,细胞的定义为沿细胞数字上下左右还是细胞数字则为同一细胞,求给定矩形阵列的细胞个数。

【输入格式】:
整数m,n(m行,n列)(n,m<=1000)
矩阵
【输入格式】:
细胞的个数。

样例:
【输入样例】:
4 10
023*******
1034560500
2045600671
0000000089
【输出样例】:
4
五、素数路
(prime.pas)
【问题描述】
内阁大臣非常沮丧,他收到了安全部长的消息:他们都需要改变办公室的四位房间号码。

安全部长:经常换换房间号码是出于安全方面的考虑,可以让敌人陷入迷惑。

内阁大臣:但是我选择1033作为我的房间号是出于我个人的偏爱。

我可是内阁大臣。

安全部长:你不就是喜欢素数吗?我们给你安排了8179这个号码,你只需要贴四个新数字覆盖住以前的四个老数字就可以了。

内阁大臣:不行,没有那么容易。

当我把1033的1用8盖住的时候,8033可不是个素数!
安全部长:我知道,你不能允许你的门上出现非素数。

内阁大臣:正确!所以我必须找到一个方法从1033修改到8179,使得过程中门上出现的永远是素数,而且每次只能够修改当前数字的一位。

这个时候,在旁边偷听的财政大臣忍不住来插嘴。

财政大臣:千万不要为了这个事情增加不必要的开支!我知道换一个数字就是要花一磅!
内阁大臣:那我需要一个计算机来规划一下。

财政大臣:我能够帮助你!
现在这个任务就交给你了。

你要从一个四位数的素数出发,每次修改其中的一位,并且要保证修改的结果还是一个素数,还不能出现前导零。

你要找到一个修改次数最少的方案,得到我们所需要的素数。

关于1033怎么变到8179,这里是一个最短的方策:
1033
1733
3733
3739
3779
8779
8179
修改了6次,所以要花6磅。

【输入格式】
一行,两个四位的素数(没有前导零),表示初始数和目标数。

【输出格式】
一个数,表示最少的操作次数。

如果不可能,输出“Impossible”。

相关主题