1011

来源:互联网 发布:js post传参方式 编辑:程序博客网 时间:2024/06/04 19:58

简单题意:给你一幅地图,让你去判断相邻,对角的油田有几个,注意,@代表油田

解题思路:深度搜索,每个点进行遍历

感想:做了好多搜索的题,方法基本都类似

AC代码:

#include <stdio.h>
#include<algorithm>
#include<iostream>
using namespace std;
char map[101][101];
int n, m, p;
void dfs(int i, int j)//递归函数
{
    if(map[i][j]!='@' || i<0 || j<0 || i>=m || j>=n) return;
    else
    {
        map[i][j]='*';//扫过的都变成'*'
        dfs(i-1, j-1);
        dfs(i-1, j);
        dfs(i-1, j+1);
        dfs(i, j-1);
        dfs(i, j+1);
        dfs(i+1, j-1);
        dfs(i+1, j);
        dfs(i+1, j+1);
    }
}
int main()
{
    int i, j;
    while(scanf("%d%d",&m,&n)!=EOF)
    {
        if(m==0 || n==0) break;
        p = 0;
        for(i = 0; i < m; i++)
            for(j = 0; j < n; j++)
            //scanf("%c",&map[i][j]);
                cin>>map[i][j];
        for(i = 0; i < m; i++)
        {
            for(j = 0; j < n; j++)
            {
                if(map[i][j] == '@')
                {
                    dfs(i, j);
                    p++;
                }
            }
        }
        printf("%d\n",p);
    }

    return 0;

0 0
原创粉丝点击