主题:第45次编程比赛第2题
第45次编程比赛第2题
一个比较经典的问题了,但也不是一点难度都没有。
我稍微做了一点改动,让大家练练手吧。
一个PI(圆周率的那个字母)型的管道,如下面所示。
----------------------------------------------
A B
--------+ +-----------+ +-------------
| | | |
| | | |
| | | |
| C | | D |
+-----+ +-----+
一队小球从A口进,从B口出。C和D为管道侧面的两个封闭的管道。
管道内径有限,不允许两个小球并排通过。即不允许两个小球随便交换位置。
C和D都能放下足够多的小球,但因为内径有限,每次都只能移动最上面的一个。
每一个小球的每一次移动称为一次操作。且小球只许从左向右移动,即以下操作是合法的:
A->C,A->D,A->B,C->D,C->B,D->B。
以下操作是非法的:
D->C,D->A,C->A。
小球最多26个(字母数)。
从A口进入时,小球进入的顺序是(即小球从右到左的顺序是)abcdefghi...(字母顺序,一个字母代表一个小球)
要求从B口出来时,小球的顺序是(即小球从右到左的顺序是)字符串s。(s为输入值。例如,s为badecfhig...)
求实现所需的最少操作数。如果不能实现,则返回"NO!"。
请编写一包含main的完整程序,先输入小球的数量n,再输入小球从B口出来时的顺序:由小写字母组成的字符串s。
输出实现所需的最少操作数m,如果不能实现,则返回"NO!"。
例如:
输入3,cba时,实际的操作为
进入时的顺序为abc
a 从 A 到 C
b 从 A 到 C
c 从 A 到 B
b 从 C 到 B
a 从 C 到 B
所以,应输出5.
再例如:
输入5,eadbc时,实际的操作为
进入时的顺序为abcde
a 从 A 到 D
b 从 A 到 C
c 从 A 到 C
d 从 A 到 C
e 从 A 到 B
a 从 D 到 B
d 从 C 到 B
c 从 C 到 D
b 从 C 到 B
c 从 D 到 B
所以,应输出10.
测试环境为VC6或VC2002
截止时间:下个星期一(10月23日)中午12点半
有任何问题,请发帖讨论,或直接通过论坛发短消息给我~~
祝大家好运~~
一个比较经典的问题了,但也不是一点难度都没有。
我稍微做了一点改动,让大家练练手吧。
一个PI(圆周率的那个字母)型的管道,如下面所示。
----------------------------------------------
A B
--------+ +-----------+ +-------------
| | | |
| | | |
| | | |
| C | | D |
+-----+ +-----+
一队小球从A口进,从B口出。C和D为管道侧面的两个封闭的管道。
管道内径有限,不允许两个小球并排通过。即不允许两个小球随便交换位置。
C和D都能放下足够多的小球,但因为内径有限,每次都只能移动最上面的一个。
每一个小球的每一次移动称为一次操作。且小球只许从左向右移动,即以下操作是合法的:
A->C,A->D,A->B,C->D,C->B,D->B。
以下操作是非法的:
D->C,D->A,C->A。
小球最多26个(字母数)。
从A口进入时,小球进入的顺序是(即小球从右到左的顺序是)abcdefghi...(字母顺序,一个字母代表一个小球)
要求从B口出来时,小球的顺序是(即小球从右到左的顺序是)字符串s。(s为输入值。例如,s为badecfhig...)
求实现所需的最少操作数。如果不能实现,则返回"NO!"。
请编写一包含main的完整程序,先输入小球的数量n,再输入小球从B口出来时的顺序:由小写字母组成的字符串s。
输出实现所需的最少操作数m,如果不能实现,则返回"NO!"。
例如:
输入3,cba时,实际的操作为
进入时的顺序为abc
a 从 A 到 C
b 从 A 到 C
c 从 A 到 B
b 从 C 到 B
a 从 C 到 B
所以,应输出5.
再例如:
输入5,eadbc时,实际的操作为
进入时的顺序为abcde
a 从 A 到 D
b 从 A 到 C
c 从 A 到 C
d 从 A 到 C
e 从 A 到 B
a 从 D 到 B
d 从 C 到 B
c 从 C 到 D
b 从 C 到 B
c 从 D 到 B
所以,应输出10.
测试环境为VC6或VC2002
截止时间:下个星期一(10月23日)中午12点半
有任何问题,请发帖讨论,或直接通过论坛发短消息给我~~
祝大家好运~~

您所在位置:
