题目省略
题意:求四连块个数
解题思路:很水的DFS。。。
代码如下
#include <queue>
#include <stdio.h>
#include <memory.h>
#include <stdio.h>
#include <iostream>
using namespace std;
#define maxn 1005
char pic[maxn][maxn];
int flag[maxn][maxn];
int n,m;
void dfs(int r,int s,int num)
{
if(r<0||r>=n||s<0||s>=m) return;
if(pic[r][s]=='.'||flag[r][s]) return;
flag[r][s]=num;
dfs(r+1,s,num);
dfs(r-1,s,num);
dfs(r,s+1,num);
dfs(r,s-1,num);
}
int main()
{
//freopen("in.txt","r",stdin);
int t;
cin>>t;
while(t--)
{
cin>>n>>m;
getchar();
for(int i=0; i<n; i++)
gets(pic[i]);
memset(flag,0,sizeof(flag));
int num=0;
for(int i=0; i<n; i++)
for(int j=0; j<m; j++)
if(pic[i][j]=='#'&&flag[i][j]==0) dfs(i,j,++num);
printf("%d\n",num);
}
return 0;
}