Virtual Judge HDU 1241 Oil Deposits

萝らか妹 提交于 2019-12-02 13:14:30

八方向   深搜

#include <iostream>
#include<cstdio>
#include<cstdlib>
#include<algorithm>
using namespace std;
char maps[1050][1050];
int n,m,d[8]= {-1,-1,-1,0, 0, 1,1,1};
int     z[8]= {-1, 0, 1,-1,1,-1,0,1};  //8个方向
void dfs(int x, int y) {
    maps[x][y] = '*'; //变为*,相当于走过
    for (int i = 0; i < 8; i++) {
        int nx = x + d[i], ny = y + z[i];
        if (0<=nx&&nx<m&&0<=ny&&ny<n) {
            if (maps[nx][ny]=='@') {
                dfs(nx, ny);
            }
        }
    }
}
int main() {
    while(~scanf("%d%d", &m, &n)&&(m || n)) {
        int count = 0;
        for(int i = 0; i < m; i++)
            scanf("%s", maps[i]);
        for(int i = 0; i < m; i++)
            for(int j = 0; j < n; j++) {
                if(maps[i][j]=='@') {
                    dfs(i,j);
                    count++;
                }
            }
        printf("%d\n", count);
    }
    return 0;
}

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!