有难度的算法设计,keywords:覆盖 矩阵 棋盘 连通 网格
一个50X50的矩阵,开始时矩阵里每一项的值为EMPTY或RED。你可以将矩阵里任意一个位置的值(无论是EMPTY或RED)改为BLACK,如果BLACK上下左右四个位置中有RED,则将该RED值改为EMPTY(没错,改为EMPTY,而不是BLACK),目标是通过尽可能少次数的改动,将矩阵里的RED消除,并且所有的BLACK相连通。
(注:相连通--如果将BLACK点看作路径,相连通就是指我们可以从一个BLACK点通过上下左右沿路径走动走到任何一个BLACK点上)。
输入:input.txt
格式:50行50列(用0表示EMPTY,1表示RED;每一行表示矩阵的一行,0 1间没有间隔)
例:见最后。
输出:output.txt
格式:第一行为一个数字,表示改动的次数;后面跟50行50列,标示改动后矩阵的值(用0表示EMPTY, 2表示BLACK;每一行表示矩阵的一行,0 2间没有间隔)
例略。
****说明****:
1.解答请在贴出程序的同时,请贴出后面输入例子的改动次数,以便于我们比较效果,最好说明程序的复杂度或运行时间。
2.解答请不要贴输出的矩阵,会导致看贴困难。
3.有个相关讨论的链接,建议不要看,可能反而糊涂:
http://community.csdn.net/Expert/topic/3733/3733723.xml?temp=.7722437
输入input.txt举例。
10100010001010000001011001000110000000100100011011
00001000011000101010011001111000111010000001010010
00101000001100001000111100101011111001010101011010
10010001010000100100100001010000101000110000111101
00011010100000000000101001101001011001100010001101
00100100101000000100011100100110100001111101010001
00001000111110001100110010000001010010111001001000
01010101000000000000110000010000010101000000111010
10101000110110010000100000101101111000001011110000
00010101001100111100101001010000011010011110110010
01001100001010010101110010100011010100011010101000
01001111000001010011011000110011000111010011110100
11110001110100100011010110000111111001001111100010
01001101101110101001001100001111011101101100011011
11000011001101001011010001001010001101100110010010
01100000011101100010000101100000100000100111001010
10010010110011100110000100001111100100100011111000
01110110111010111001010011010101000000001110110110
00000111110010010010101111001010101111101100100000
11010100110011000101000010000010000001101000100100
01110011111010111111000110000011100111110011100111
00000010100011010100110010110000000000000101100000
01010110010000110001000000000000000010001101011011
11010101011000000000011011011000000100111100000010
01000000011100010100000010101110011010011001111010
01111000001010000100011110000010011101110100101100
11000010001010011000101001001110110100111000000111
11100000100001010110010010000010010100001000111110
10010010110000100000101001110101001100101111100101
01011001001010100010100011001000001000001011101000
00001000011111110100000111001100000000100010001010
00001000010011100100001001001000001111110101000011
01001111011000100010100100010110011100010001110011
11000010111111001000000000001000101110111000001010
01000111010101010010011100110011101101000011100100
00110001010110010110001101100000111001010001010110
00100011110000011100010011110100000001111000010110
10001000011101000100011101000111001111000111110010
10100000001100010001111100011110001001100010100101
00011100001000010010111000001001010000101100100010
00101010000010001100100001100010010000010110110001
01110100010010010010001110010011001110010101010010
01000001111010000011000100001111000000000100000011
11011001011000111101001101010000000011110101000100
01111100010110100010010011100000001000110100000001
11111111000111001100001000010110001101001011101100
11101100100000100001001101010001010101101101010001
01000100000001100110100010000101010100100011000110
00000101111000000100000111100011000000100000101101
00110110001010011011101011110000000010011110000001