文章
74
粉丝
0
获赞
94
访问
8.2k
1.DFS解法
#include<bits/stdc++.h>
using namespace std;
const int maxn = 100 + 5;
char mpt[maxn][maxn];
int vis[maxn][maxn];
int dirx[9] = {0, 0, 0, 1, -1, 1, -1, 1, -1};
int diry[9] = {0, 1, -1, 0, 0, 1, -1, -1, 1};
int m, n;
void dfs(int x, int y){
vis[x][y] = 1;
for(int i = 1; i <= 8; i ++){
int dx = x + dirx[i];
int dy = y + diry[i];
if(dx > 0 && dy > 0 && dx <= m && dy <= n && vis[dx][dy] == 0){
if(mpt[dx][dy] == '@') dfs(dx, dy);
}
}
}
int main(){
while(cin >> m >> n && m != 0){
memset(vis, 0, sizeof(vis));
for(int i = 1; i <= m; i ++){
scanf("%s", mpt[i] + 1);
}
int ans = 0;
for(int i = 1; i <= m; i ++){
for(int j = 1; j <= n; j ++){
if(vis[i][j] == 0 && mpt[i][j] == '@'){
ans ++...
登录后发布评论
暂无评论,来抢沙发