消灭星星--高级

 1 Sec 64 MB |  显示标签
11
通过提交

题目描述

消灭星星(PopStar)是一款经典的手机游戏。

这个游戏最多只有4种不同的星星。如果点击一个星星,那么它与跟它连通的相同颜色的星星就会同时消失掉。

当某个星星消失时,下面 两个事件依次发生:

(1):那些在它上面的星星,就会掉落下来。

(2):如果某列星星都消失了,那么它右边的方块都会整体移动过来。

这个过程是一个完整的过程,不可中断,即星星没有完成更新时,不能进行点击。

现实游戏中,一个联通块中至少有两个星星才可以消除。简化下问题,本题中,连通块中只要有一个星星,也可以消除,这样所有的星星都可以消除掉。

你的任务就是算算最少用多少步,就可以把所有的星星都消除掉。

输入格式

第一行两个整数n和m(2≤n,m≤6),表示星星的行数和列数。

接下来n行,每行m个数,为0,1,2,3,4中的一个,0表示空,其他表示一种颜色。

输出格式

输出最少需要点击多少次,就能把所有的星星都消除掉。

样例输入 #1

2 3 
1 2 0
3 3 0

2 3
0 2 0
1 1 2

5 6
0 0 0 3 4 4
0 1 1 3 3 3
2 2 1 2 3 3
1 1 1 1 3 3
2 2 1 4 4 4

样例输出 #1

3

2

4

提示

样例三:点击(2,2)—>(2,3)—>(4,4)—>(4,1)。

输入数据保证合法,不需要再下落和左移。

来源

The 13th ZJNU Anniversary Contest
 上传者
coach
 创建时间
2014-07-27 15:23
 修改时间
2017-05-17 00:42