消灭星星--高级
1 Sec 64 MB |
1 | 1 |
通过 | 提交 |
题目描述
消灭星星(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