百度决赛的题目——八方块移动游戏

有我网 发布时间:2008-10-01

题目描述:

八方块移动游戏要求从一个含8个数字(用1-8表示)的方块以及一个空格方块(用0表示)的3×3矩阵的起始状态开始,不断移动该空格方块以使其和相邻的方块互换,直至达到所定义的目标状态。空格方块在中间位置时有上、下、左、右4个方向可移动,在四个角落上有2个方向可移动,在其他位置上有3个方向可移动。例如,假设一个3×3矩阵的初始状态为:
8 0 3
2 1 4
7 6 5
目标状态为:
1 2 3
8 0 4
7 6 5
则一个合法的移动路径为:
8 0 3        8 1 3       8 1 3       0 1 3        1 0 3       1 2 3
2 1 4 =>  2 0 4 =>  0 2 4 =>  8 2 4 =>  8 2 4 =>  8 0 4
7 6 5       7 6 5        7 6 5       7 6 5        7 6 5        7 6 5

另外,在所有可能的从初始状态到目标状态的移动路径中,步数最少的路径被称为最短路径;在上面的例子中,最短路径为5。如果不存在从初试状态到目标状态的任何路径,则称该组状态无解。

请设计有效的(细节请见评分规则)算法找到从八方块的某初试状态到某目标状态的所有可能路径中的最短路径,并用C/C++实现。

输入数据:

程序需读入已被命名为start.txt的初始状态和已被命名为goal.txt的目标状态,这两个文件都由9个数字组成(0表示空格,1-8表示8个数字方块),每行3个数字,数字之间用空格隔开。

输出数据:

如果输入数据有解,输出一个表示最短路径的非负的整数;如果输入数据无解,输出-1。

自测用例:

如果输入为:start.txt:
8 0 3
2 1 4
7 6 5

和goal.txt:
1 2 3
8 0 4
7 6 5

则产生的输出应为:
5

又例,如果用
7 8 4
3 5 6
1 0 2
替换start.txt中的内容,则产生的输出应为:
21

评分规则:

1)我们将首先使用和自测用例不同的10个start.txt以及相同的goal.txt,每个测试用例的运行时间在一台Intel Xeon 2.80GHz 4 CPU/6G 内存的Linux机器上应不超过10秒(内存使用不限制),否则该用例不得分;

2)每个选手的总分(精确到小数点后6位)=10秒钟内能产生正确结果的测试用例数量x10+(1/产生这些正确结果的测试用例的平均运行毫秒);

3)如果按此评分统计仍不能得出总决赛将决出的一、二、三等奖共计九名获奖者,我们将先设N=2,然后重复下述过程直至产生最高的9位得分:用随机生成的另外10个有解的start.txt再做测试,并对这10*N个测试用例用2)中公式重新计算总分,N++。

请在邮件中注明:信息来自有我网(www.unus.cn)

求职资料汇总(浏览更多
银行

IT/电信

中国工商银行求职资料 中国农业银行求职资料 中国移动求职资料 中国电信求职资料
中国银行求职资料 中国建设银行求职资料 网易求职资料 百度求职资料
国家开发银行求职资料 北京银行求职资料 广东电信求职资料 浙江移动求职资料
邮政储蓄银行求职资料   腾讯求职资料 腾讯实习求职资料
快消 IBM 求职资料 华为求职资料
宝洁求职资料 宝洁求职资料(2) 思科求职资料 联想集团求职资料
联合利华求职资料 妮维雅求职资料 华赛求职资料 中国联通求职资料
康师傅求职资料 玛氏求职资料 四大
化工 安永求职资料 德勤求职资料
巴斯夫求职资料 陶氏化学求职资料 毕马威求职资料 普华永道求职资料
壳牌求职资料   地产
电子 万科求职资料 保利地产求职资料
索尼求职资料 飞利浦求职资料 其他
广东粤电求职资料 海信求职资料 广汽本田求职资料 南方报业求职资料