ACM习题,求高手解答

10-09-16 chenyunfeng1987
RT.题目如下:

魔板由8个大小相同方块组成,分别用涂上不同颜色,用1到8的数字表示。

其初始状态是

1 2 3 4

8 7 6 5

对魔板可进行三种基本操作:

A操作(上下行互换):

8 7 6 5

1 2 3 4

B操作(每次以行循环右移一个):

4 1 2 3

5 8 7 6

C操作(中间四小块顺时针转一格):

1 7 2 4

8 6 3 5

用上述三种基本操作,可将任一种状态装换成另一种状态。

[输入]标准输入stdin

输入包括多个要求解的魔板,每个魔板用三行描述。

第一行步数N(不超过10的整数),表示最多容许的步数。

第二、第三行表示目标状态,按照魔板的形状,颜色用1到8的表示。

当N等于-1的时候,表示输入结束。

4

5 8 7 6

4 1 2 3

3

8 7 6 5

1 2 3 4

-1

[输出] 标准输出 stdout

对于每一个要求解的魔板,输出一行。

首先是一个整数M,表示你找到解答所需要的步数。接着若干个空格之后,从第一步开始按顺序给出M步操作(每一步是A、B或C),相邻两个操作之间没有任何空格。

注意:如果不能达到,则M输出-1即可。

2 AB

1 A

注:最好用java实现,C或C++也可。

qinyue
2010-11-10 12:59
acm大赛对算法和数据结构,还有离散数学要求相当高,不过这里好像都是在研究的设计模式或更高层次的,所以我猜这里对于底层算法之类的研究应该不深(个人猜想而已),所以我认为找c语言的高手更容易找的答案

猜你喜欢