集训 Poj 1979
来源:互联网 发布:webshell是什么 编辑:程序博客网 时间:2024/05/16 14:05
题意:一个地图,求从起点开始,可以到达的点的个数,其中有墙阻隔,默认有边界。
题解:DFS,从起点开始,先替换这个点使之成为墙,然后四个方向进行搜索,知道没有点为止。
注意:在输入地图时,应该注意加一个为止存放’\n’,所以第二层for要+1宽度;还有在输入地图规格时候注意加上getchar,以免后面混乱
(当输入的是数字地图时候,不需要加宽)
#include<iostream>#include<stdio.h>#include<stdlib.h>#include<string.h>#define pr(x) cout<<#x<<" "<<x;#define pl(x) cout<<#x<<" "<<x<<endl;using namespace std;char maze[30][30];int ans=0;int dx[] = {0,0,-1,1};int dy[] = {-1,1,0,0};int H,L;void dfs(int x,int y){ maze[x][y]='#'; ans++; for(int i = 0; i<4; i++){ int nx = x + dx[i]; int ny = y + dy[i]; // pl(maze[nx][ny]); if(nx<L&&nx>=0&&ny<H&&ny>=0&&maze[nx][ny]=='.') { dfs(nx,ny); } }}int main(){ while(1){ int x,y; scanf("%d %d",&L,&H); getchar(); if(H==0){return 0;} for(int i = 0; i<H; i++){ for(int j = 0; j<L+1; j++){ scanf("%c",&maze[j][i]); if(maze[j][i]=='@'){ x=j; y=i; } } } dfs(x,y); printf("%d\n",ans); ans=0; }}
0 0
- 集训 Poj 1979
- 集训 Poj 3009
- 集训 Poj 3669 BFS
- POJ 1330 大一暑假ACM集训
- 集训
- poj 1611 并查集训练
- 集训——挑战(P18,Poj NO.1852)
- ACM暑假集训日记 17.8.9 POJ 2774 字符串 Hash
- CSU-ACM2017暑假集训2-二分搜索 poj-2785-4 Values whose Sum is 0
- CSU-ACM2017暑假集训2-二分搜索 poj-32732 Monthly Expense
- CSU-ACM2017暑假集训2-二分搜索 poj-2456 Aggressive cows-最大化最小值
- CSU-ACM2017暑假集训2-二分搜索 poj-3258- River Hopscotch
- 跳伞集训
- 集训啦!
- 集训比赛
- 集训终点
- 集训概况
- 集训日记
- EXTJS4.0.7开发积累(3)
- 第一次更博,160720小记
- LeetCode - 171. Excel Sheet Column Number
- Oracle修改表空间大小
- GCD
- 集训 Poj 1979
- JavaScript 利用原型和原型链实现对象继承
- openwrt 恢 复 出厂设置
- 2016 多校第一场 hdu 5723(最小生成树+dfs)
- Linux学习_管道和共享内存
- 把字符串转换成整数
- 大型网站架构:负载均衡(2)
- 关于JAVA代码块
- HDU 1176 免费馅饼