题目名称 59. 空格游戏
输入输出 gap.in/out
难度等级 ★★★
时间限制 3000 ms (3 s)
内存限制 512 MiB
测试数据 25
题目来源 GravatarBYVoid 于2008-07-10加入
开放分组 全部用户
提交状态
分类标签
搜索法
分享题解
通过:3, 提交:20, 通过率:15%
Gravatarytrytr 100 0.410 s 0.31 MiB C++
GravatarluishenSTL没优化就成渣 100 0.840 s 3.13 MiB C++
Gravatar苦读依旧 100 2.165 s 222.84 MiB C++
Gravatar.Xmz 48 29.066 s 0.26 MiB C++
Gravatar.Xmz 48 33.831 s 0.26 MiB C++
Gravatar.Xmz 48 35.661 s 0.26 MiB C++
Gravatar.Xmz 36 43.292 s 0.26 MiB C++
Gravatar.Xmz 32 41.003 s 0.26 MiB C++
Gravatar....0.. 20 0.035 s 0.29 MiB C
Gravatar.Xmz 4 66.174 s 219.89 MiB C++
关于 空格游戏 的近10条评论(全部评论)
仰慕luishen,給跪
GravatarMakazeu
2012-09-28 11:07 2楼
无力吐槽。。。
GravatarluishenSTL没优化就成渣
2012-09-28 11:06 1楼

59. 空格游戏

★★★   输入文件:gap.in   输出文件:gap.out   简单对比
时间限制:3 s   内存限制:512 MiB
题目描述
我们来玩一个叫空格的牌类游戏。你有28张用两位数标记的牌,第一位(从1到4)表示不同的花色,第二位(从1到7)表示牌的值。
首先,你先洗牌,然后将它们排成四行,每行七张,在每行的最左边留一张牌的位置。下面给出一个可能的最初排布。
 
 
42
21
13
22
32
26
23
 
16
43
47
14
24
34
36
 
46
17
27
31
11
37
12
 
35
41
44
25
15
33
45
 
下一步,你移动所有值为1的牌,将它们放在左边的空格里:11放在最上面,12放在下一格,如此放下去。
现在你有28张牌和4个空格,排成4行8列。如上述举例,你从下面情况开始移动。
 
11
42
 
13
22
32
26
23
21
16
43
47
14
24
34
36
31
46
17
27
 
 
37
12
41
35
 
44
25
15
33
45
 
每一步移动,你选择四个空格之一,将该空格左边的牌的后继牌放进去。后继牌是指同一花色的下一张牌。例如42的后继牌时42,27没有后继牌。
 
在上面的情况中,你可以将43移动到43的右边的空格中,或者将36移动到35的右边。例如你移动43,16的右边后产生一个新的空格。你不能将派移动到价值为7的牌的右边,也不能移动到空格的右边。
 
游戏的目标是,选择最佳移动,使得每种花色各自成上升序列,如下表。
 
11
12
13
14
15
16
17
 
21
22
23
24
25
26
27
 
31
32
33
34
35
36
37
 
41
42
43
44
45
46
47
 
 
你的任务是计算到达目标状态所需的最少移动。
 
输入格式
 
4行7列,表示初始状态。
 
输出格式
 
一个整数,到达目标状态所需的最少移动。最初移动4张值为1的牌的移动不算在内。如果没法到达,输出-1。
 
输入样例
26 31 13 44 21 24 42
17 45 23 25 41 36 11
46 34 14 12 37 32 47
16 43 27 35 22 33 15
 
输出样例
33