HDU 1241 Oil Deposits

来源:互联网 发布:学历 英文 知乎 编辑:程序博客网 时间:2024/05/21 17:22

简单的dfs。。
不过要规定条件,不然会wa。。有点奇怪。。照理说走出map就没有@了。。
恩。。以后多多关注边界吧!

#include<stdio.h>int n,m;char map[110][110];int move[8][2]={{1,0},{-1,0},{0,1},{0,-1},{1,1},{-1,-1},{-1,1},{1,-1}};void dfs(int i,int j){    for(int k=0;k<8;k++)    {        int newi=i+move[k][0];        int newj=j+move[k][1];        if(newi>=0&&newi<n&&newj>=0&&newj<m&&map[newi][newj]=='@')        {             map[newi][newj]='*';             dfs(newi,newj);        }    }}int main(){    while(scanf("%d%d",&n,&m)!=EOF)    {        if(n==0&&m==0)            break;        int i,j;        int ans=0;        for(i=0;i<n;i++)            scanf("%s",map[i]);        for(i=0;i<n;i++)            for(j=0;j<m;j++)            {                if(map[i][j]=='@')                {                    ans++;                    map[i][j]='*';                    dfs(i,j);                }            }        printf("%d\n",ans);    }    return 0;}
0 0
原创粉丝点击