Description
Input
Output
Sample Input
1 1 * 3 5 *@*@* **@** *@*@* 1 8 @@****@* 5 5 ****@ *@@*@ *@**@ @@@*@ @@**@ 0 0
Sample Output
0 1 2 2
AC代碼:
//
// main.cpp
// POJ 1562
//
// Created by showlo on 2018/4/16.
// Copyright © 2018年 showlo. All rights reserved.
//
#include <iostream>
#include <stdio.h>
#include <algorithm>
using namespace std;
#define max 1000
char map[max][max];
int vis[max][max],num[max][max];
int m,n;
void dfs(int x,int y){
int i,j,nx,ny;
vis[x][y]=1;
for (i=-1; i<=1; i++) {
for (j=-1; j<=1; j++) {
nx=x+i;
ny=y+j;
if (nx>=0&&nx<m&&ny>=0&&ny<n&&map[nx][ny]=='@'&&vis[nx][ny]==0)
{
vis[nx][ny]=1;
dfs(nx, ny);
}
else
continue;
}
}
return;
}
int main() {
int i,j,num;
while (scanf("%d %d",&m,&n)!=EOF) {
if (m==0)
break;
num=0;
memset(vis, 0, sizeof(vis));
for(i=0;i<m;i++)
scanf("%s",map[i]);
for (i=0; i<m; i++) {
for (j=0; j<n; j++) {
if (map[i][j]=='@'&&vis[i][j]==0) {
dfs(i,j);
num++;
}
}
}
printf("%d\n",num);
}
return 0;
}