题目描述:

  每组数据给你一张字符的图,'@'代表起点,'.'代表可走的路,'#'代表墙,求从起点出发,可到达的位置的数量,包括起点。

思路:

  dfs基础题,从起始点开始,每一次所在的点,只要不出界并且字符为'@'或'.',则把这个点的字符改为一个标志,再向四周扩散。如果出了边界或者遇到'#',则这条路到尽头。

  最后只要遍历整张图,统计标志的数量即可。

  好像有点不道德,直接把原图修改了= =

#include<iostream>
#include<cstdio>
#include<string>
using namespace std;
string a[];
int H,W,dir[][] ={{,-},{,},{,},{-,}}; void dfs(int x,int y)
{
if(x < || x >= H || y < || y >= W) return;
if(a[x][y] == '.' || a[x][y] == '@')
{
a[x][y] = '';
for(int i = ;i < ;i++)
{
int xx = x+dir[i][],yy = y+dir[i][];
dfs(xx,yy);
}
}
} int main()
{
while(cin >> W >> H && W && H)
{
int beginx,beginy; for(int i = ;i < H;i++)
{
cin >> a[i];
}
for(int i = ;i < H;i++)
{
for(int j = ;j < W;j++)
{
if(a[i][j] == '@')
{
beginx = i;
beginy = j;
}
}
}
dfs(beginx,beginy);
int sum = ;
for(int i = ;i < H;i++)
{
for(int j = ;j < W;j++)
{
if(a[i][j] == '') sum++;
}
}
cout << sum << endl;
}
return ;
}

最新文章

  1. 利用office2010 word2010生成目录
  2. Runtime获取一个类中所有成员变量的名字和类型
  3. (转载)LCA问题的Tarjan算法
  4. angularjs2 学习笔记(三) 服务
  5. 获取windows版本信息
  6. javascript闭包分析
  7. 解决android studio 创建新项目后假死
  8. Mirantis OpenStack HA
  9. ZIP文件解压
  10. 由Find All References引发的思考。,
  11. 剑指Offer面试题39(Java版):二叉树的深度
  12. Xapian索引-文档检索过程分析之匹配百分比
  13. 深入了解EntityFramework Core 2.1延迟加载(Lazy Loading)
  14. PS快速调出天蓝色清新外景
  15. pgadmin连接 postgresql远程设置
  16. Python中matplotlib模块解析
  17. PAT A1104 Sum of Number Segments (20 分)——数学规律,long long
  18. HDU 2522 A simple problem (模拟)
  19. Eclipse启动参数设置
  20. 修改windows服务的描述

热门文章

  1. 推荐中的多任务学习-ESMM
  2. owa部署
  3. Java小项目之:五子棋,你下棋下得过电脑吗?
  4. 【Java基础总结】数据库编程
  5. 客户端访问windows server2016 服务器共享 速度慢
  6. how to render html tag
  7. Python使用requests爬取一个网页并保存
  8. 三个实用的javascript小技巧
  9. MySQL8.0.19安装
  10. 匈牙利算法(Kuhn-Munkres)算法