春天到了,师大的园丁们又开始忙碌起来了.
京师广场上有一块空地,边界围成了一个多边形,内部被划分成一格一格的.园丁们想在这个多边形内的每一格内种植一些花. 现在请你帮忙计算一下一共最多可以种多少花. 广场用一个M*N的字符数组表示,"."和"*"代表一个方格,其中"*"代表空地的边界,"."是空格,只有边界内部的空格才能用于种花. 一个空格位于边界内部,当且仅当由该点出发只允许向上、下、左、右四个方向移动,最终都会遇到边界。 例如下面就是一个6*7的广场 ....... ..***.. ..*..*. ..*..*. ...**.. ....... 种花方案如下(数字代表的地方) ....... ..***.. ..*12*. ..*34*. ...**.. .......Input
输入数据第一行是M和N(M和N不超过100),代表有广场的大小 接下来就是一个M*N的字符矩阵,是广场的表示
Output
对应于输入数据,输出一个整数,给出输入的情形能够种的花数目.
Sample Input
6 7.........***....*..*...*..*....**.........5 7.........***....*.*....***.........
Sample Output
41 一般想得到的方法是搜索大法,当然这道题也可以直接暴力循环
#includeint k[102][102];char l[102];int n,m;int x[4]={-1,0,0,1},y[4]={ 0,-1,1,0};void dfs(int a,int b){ for(int i=0;i<4;i++) { int xx=a+x[i]; int yy=b+y[i]; if(xx>-1&&xx -1&&yy