103 lines
2.9 KiB
Markdown
103 lines
2.9 KiB
Markdown
Q1
|
||
```
|
||
编写程序检查给定字符串中包含的括号是否正确匹配,本题中的括号有{ }、[ ]、( )、< >四种。另外再加上一个新的约束条件:当有多种括号嵌套时,嵌套的顺序应为{ → [ → ( → <,即a–g+b∗[(d∗<e–f>)]、a+[b+(c–d)∗e]都是正确的匹配,而a+(b∗[c+d])则不是正确匹配。注意本题不允许相同类型括号的嵌套,即a+(b∗(c+d))不是正确匹配。本题不需要判断表达式是否合法,只需判断字符串中包含的括号是否正确匹配。
|
||
|
||
输入格式:
|
||
第一行为一个整数n,表示字符串的个数。接下来n行,每行为一个字符串。1<n≤100,字符串长度不超过1000。
|
||
|
||
输出格式:
|
||
对于每个字符串,若为正确匹配则输出"Match" ,若不匹配则输出"Fail"。
|
||
|
||
输入样例1:
|
||
8
|
||
a+(b*[c+d])
|
||
g{b[(<c>)d]e}x
|
||
[()]
|
||
((()))
|
||
<>()[]{}
|
||
[{}]
|
||
x=y+{z+(b)}
|
||
][()
|
||
输出样例1:
|
||
Fail
|
||
Match
|
||
Match
|
||
Fail
|
||
Match
|
||
Fail
|
||
Match
|
||
Fail
|
||
输入样例2:
|
||
6
|
||
{[afds(a<afd>)]}yt
|
||
[()rew]
|
||
<>()[wre]{}
|
||
[{qw}]
|
||
rew{(weq)}jjk
|
||
<><{}>[][](){[{}]}
|
||
输出样例2:
|
||
Match
|
||
Match
|
||
Match
|
||
Fail
|
||
Match
|
||
Fail
|
||
代码长度限制
|
||
16 KB
|
||
时间限制
|
||
50 ms
|
||
内存限制
|
||
30 MB
|
||
栈限制
|
||
8192 KB
|
||
```
|
||
Q2
|
||
```
|
||
从A点到B点有n个格子,小明现在要从A点到B点,小明吃了些东西,补充了一下体力,他可以一步迈一个格子,也可以一步迈两个格子,也可以一步迈3个格子,也可以一步迈4个格子。请编写程序计算小明从A点到B点一共有多少种走法。
|
||
|
||
grid2.jpg
|
||
|
||
输入格式:
|
||
输入包含多组数据,第一行为一个整数m,m不超过10000,表示输入数据组数。接下来m行,每行为一个整数n(n不超过100,且保证对应的结果小于2
|
||
31
|
||
),表示从A点到B点的格子数。
|
||
|
||
输出格式:
|
||
输出为m个整数,表示对于每组数据小明从A点到B点的走法数。
|
||
|
||
输入样例:
|
||
2
|
||
5
|
||
3
|
||
输出样例:
|
||
15
|
||
4
|
||
```
|
||
|
||
Q3
|
||
```
|
||
本学期的《数据结构》课上,老师曾结合汉诺塔问题,介绍了使用栈消除递归的方法,从而将汉诺塔问题的递归算法转换为非递归算法,本题请你编程实现上述非递归算法,即使用栈以非递归形式求解汉诺塔问题。将n个圆盘自A柱移至C柱(可途经B柱),并输出求解过中栈的最大容量(最多存储了多少个四元组)。
|
||
|
||
备注:本题将在机器评测后进行人工核验,若有同学未按题目要求,仅使用递归程序通过本题,本题记为0分。
|
||
image.png
|
||
|
||
输入格式:
|
||
输入为一个整数n,表示初始时A柱上的圆盘数目,n不超过20。
|
||
|
||
输出格式:
|
||
按顺序输出各动作,每个动作占一行,格式为“Move disk from x to y”,表示将x柱顶端的圆盘移至y柱。
|
||
|
||
最后一行为一个整数,表示求解过程中栈的最大容量。
|
||
|
||
输入样例:
|
||
3
|
||
输出样例:
|
||
Move disk from A to C
|
||
Move disk from A to B
|
||
Move disk from C to B
|
||
Move disk from A to C
|
||
Move disk from B to A
|
||
Move disk from B to C
|
||
Move disk from A to C
|
||
5
|
||
``` |