poj1562

来源:互联网 发布:fcitx输入法 linux 编辑:程序博客网 时间:2024/05/18 01:59

水题一道,主要是通过从已有的某一个@点出发,沿着八个方向进行访问,假如碰到的是@那么就从该点再进行访问,同时要把该点换位*

AC CODE

//2014年9月8日09:39:22//author:BGY #include<stdio.h>#include<algorithm>#include<stack>#include<iostream>#include<cmath>#include<set>#include<vector>#include<map>#include<queue>#include<string.h>using namespace std;int n,m; char grid[110][110];int cnt;int fx[8][2]={{0,1},{1,1},{1,0},{1,-1},{0,-1},{-1,-1},{-1,0},{-1,1}};void dfs(int x,int y){   grid[x][y]='*';   for(int i=0;i<8;i++)   {      int xx=x+fx[i][0];      int yy=y+fx[i][1];      if(xx<0||yy<0||xx>=n||yy>=m) continue;      if(grid[xx][yy]=='@')   dfs(xx,yy);   }}int  main(void){  while(scanf("%d %d",&n,&m)!=EOF)  {  if(n==0) break; for(int i=0;i<n;i++) {   scanf("%s",grid[i]); } cnt=0; for(int i=0;i<n;i++) {    for(int j=0;j<m;j++)    {         if(grid[i][j]=='@')         {       dfs(i,j);       cnt++;            }     } } printf("%d\n",cnt);     }  return 0;}


0 0