标签:dfspan idtransmarksp pojspan idtransmarks
| Time Limit: 1000MS | Memory Limit: 10000K | |
| Total Submissions: 14611 | Accepted: 7961 |
Description
Input
Output
Sample Input
1 1 * 3 5 *@*@* **@** *@*@* 1 8 @@****@* 5 5 ****@ *@@*@ *@**@ @@@*@ @@**@ 0 0
Sample Output
0 1 2 2
Source //DFS主要是用于全部遍历方面, 用BFS求最小值比较好.
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cstdlib>
#define INF 0x3f3f3f3f
using namespace std;
int n,m;
char a[200][200];
int dx[]={-1,0,1,0,-1,-1,1,1};
int dy[]={0,-1,0,1,1,-1,-1,1};
int panduan(int x,int y)
{
if(x<n&&y<m&&x>=0&&y>=0&&a[x][y]=='@')
return 1;
return 0;
}
int DFS(int x,int y)
{
if(!panduan(x,y))
return 0;
a[x][y]='*'; //将走过的点全部的变为非油田.
for(int i=0;i<8;i++)
{
int fx=dx[i]+x;
int fy=dy[i]+y;
if(panduan(fx,fy))
DFS(fx,fy);
}
}
int main()
{
while(~scanf("%d%d",&n,&m))
{
if(!n&&!m) break;
for(int i=0;i<n;i++)
{
scanf("%s",a[i]);
}
int num=0;
for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
{
if(a[i][j]=='@')//看有几个连续的部分
{
DFS(i,j);
num++;
}
}
printf("%d\n",num);
}
}
版权声明:本文为博主原创文章,未经博主允许不得转载。
标签:dfspan idtransmarksp pojspan idtransmarks
原文地址:http://blog.csdn.net/became_a_wolf/article/details/47978015