描述
有一个正方形的墙,由N*N个正方形的砖组成,其中一些砖是白色的,另外一些砖是黄色的。Bob是个画家,想把全部的砖都涂成黄色。但他的画笔不好使。当他用画笔涂画第(i, j)个位置的砖时, 位置(i-1, j)、 (i+1, j)、 (i, j-1)、 (i, j+1)上的砖都会改变颜色。请你帮助Bob计算出最少需要涂画多少块砖,才能使所有砖的颜色都变成黄色。
输入
第一行是一个整数n (1≤n ≤15),表示墙的大小。接下来的n行表示墙的初始状态。每一行包含n个字符。第i行的第j个字符表示位于位置(i,j)上的砖的颜色。“w”表示白砖,“y”表示黄砖。
输出
一行,如果Bob能够将所有的砖都涂成黄色,则输出最少需要涂画的砖数,否则输出“inf”。
样例输入
5
wwwww
wwwww
wwwww
wwwww
wwwww
1
2
3
4
5
样例输出
15
此题和熄灯问题十分类似,可以说是相当于熄灯问题的一个翻版,还是采用局部思想的方法。此题的局部还是第一行,我们只需枚举第一行所有砖块的涂画情况,以此来推断出下一行的的涂画情况(使每行的砖块都被涂画成黄色)直到最后一行,然后检查一下最后一行的所有砖块是否能被涂成黄色。
我们采用二维数组的方式解决:
#include<iostream>