dfs+染色 练习题
dfs+染色 练习题 POJ - 1979 Red and Black 点击进入原题 ####个人觉得这道题其实就是要算连续的 ‘.’ 的个数,然后有 ‘#’ 阻挡了。 ####思路:搜索@确定开始的位置,把@变为 ’#‘;然后查找四个方向找 ‘.’ 并逐个变为 ’#‘ ; 定义全局变量按时加以计数,最后打印出答案,emmm因为有可能出现多个例子所以ans得记得初始化为0; # include <iostream> using namespace std ; int w , h , ans = 0 ; char a [ 21 ] [ 21 ] ; void dfs ( int i , int j ) { a [ i ] [ j ] = '#' ; ans ++ ; //查找四个方向 if ( a [ i + 1 ] [ j ] == '.' && ( i + 1 ) < w ) dfs ( i + 1 , j ) ; if ( a [ i - 1 ] [ j ] == '.' && ( i - 1 ) >= 0 ) dfs ( i - 1 , j ) ; if ( a [ i ] [ j + 1 ] == '.' && ( j + 1 ) < h ) dfs ( i , j + 1 ) ; if ( a [ i ] [ j - 1 ] == '.' && ( j - 1 ) >=