X-man

导航

hdu 1241 Oil Deposits

#include<stdio.h>
#include<string.h>
char a[110][110];
int f[8][2]={{0,1},{0,-1},{-1,1},{-1,0},{-1,-1},{1,-1},{1,0},{1,1}};
int m,n;
int dfs(int i,int j)
{
    for(int k=0;k<8;k++)
    {
        int x=i+f[k][0];
        int y=j+f[k][1];
        if(x>=0&&y>=0&&x<m&&y<n&&a[x][y]=='@')
        {
            a[x][y]='*';
            dfs(x,y);
        }
    }
    return 0;
}
int main()
{
    int ans;
    char c;
    while(scanf("%d %d",&m,&n)!=EOF&&n!=0&&m!=0)
    {
        //memset(a,'*',sizeof(a));
        getchar();
        for(int i=0;i<m;i++)
        {
            for(int j=0;j<n;j++)
            scanf("%c",&a[i][j]);
            getchar();
        }
        ans=0;
        for(int i=0;i<m;i++)
        for(int j=0;j<n;j++)
        {
            if(a[i][j]=='@')
            {
                a[i][j]='*';
                ans++;
                dfs(i,j);
            }
        }
        printf("%d\n",ans);
    }
    return 0;
}

简单搜素:

           ~~遇到奇葩的问题(运行环境:codeblocks)

            当复制题目的测试数据时,最后一组数据,得不出正解!

            后来输出二维数组调试时,发现

                                        数组每行的首位置被输入了‘\n’

                  后来,尝试手输,结果正确!!!!!!!!!!

                                   无厘头!你了解!坑坑!!!!!!

posted on 2013-05-09 18:10  雨钝风轻  阅读(182)  评论(0编辑  收藏  举报