神棍节献礼之——POJ1111 Image Perimeters(bfs)
题很简单,广搜,深搜自己随意就好。
BFS 代码:
#include<cstdio>
#include<cstring>
#include<queue>
using namespace std;#define N 31int n,m,mat[N][N],vis[N][N];
int dir[8][2]={-1,0, 1,0, 0,-1, 0,1, -1,-1, -1,1, 1,-1, 1,1};struct node{int x,y;
};int judge(int x,int y){if(x>=1 && y>=1 && x<=n && y<=m)return 1;return 0;
}
/*只有当搜到边界时,才需要统计边数!!!*/
void bfs(int x,int y){queue<node> q;int i;memset(vis,0,sizeof(vis));node cur,next;cur.x=x; cur.y=y;vis[cur.x][cur.y]=1;q.push(cur);int sum=0;while(!q.empty()){cur=q.front();q.pop();for(i=0;i<8;i++){next.x=cur.x+dir[i][0];next.y=cur.y+dir[i][1];if(vis[next.x][next.y]==1)continue;if(judge(next.x,next.y) && mat[next.x][next.y]){//在界内 且 可达vis[next.x][next.y]=1;q.push(next);}else if(i<4)sum++;/*八个方向中,只有上下左右需要考虑边界,剩下的四个方向的边界对sum值没有影响*/}}printf("%d\n",sum);
}
int main()
{int i,j,x,y;char ch[2];while(scanf("%d%d%d%d",&n,&m,&x,&y),n){memset(mat,0,sizeof(mat));for(i=1;i<=n;i++){for(j=1;j<=m;j++){scanf("%1s",ch);if(ch[0]=='.')mat[i][j]=0;else mat[i][j]=1;}}if(mat[x][y]==0)puts("0");else bfs(x,y);}return 0;
}
神棍节献礼之——POJ1111 Image Perimeters(bfs)相关推荐
- HDU-1459.非常可乐(BFS )
这道题TLE了很多次,原来一直以为将数字化为最简可以让运算更快,但是去了简化之后才发现,真正耗时的就是化简....还和队友学到了用状态少直接数组模拟刚就能过... 本题大意:给出可乐的体积v1,给出两 ...
- HDU1548:A strange lift(Dijkstra或BFS)
题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=1548 题意:电梯每层有一个数,例如第n层有个数k, 那么这一层只能上k层或下k层,但是不能低于一层或高 ...
- HDU 1429 胜利大逃亡(续) (BFS+位压缩)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1429 胜利大逃亡(续) Time Limit: 4000/2000 MS (Java/Others) ...
- usaco Overfencing 穿越栅栏(BFS)
Overfencing 穿越栅栏 农夫 John 在外面的田野上搭建了一个巨大的用栅栏围成的迷宫.幸运的是,他在迷宫的边界上留出 了两段栅栏作为迷宫的出口.更幸运的是,他所建造的迷宫是一个" ...
- 数据结构--搜索BFS
文章目录 广度优先搜索 典型例题 广度优先搜索 广度优先搜索类似于树的层次遍历过程.它需要借助一个队列来实现.如图2-1-1所示,要想遍历从v0到v6的每一个顶点,我们可以设v0为第一层,v1.v2. ...
- 2017icpc沈阳 G Infinite Fraction Path BFS+剪枝
题意:给一个长度为n的字符串数组,你可以选定起点跳n次,从i点只能跳到(i*i+1)%n的位置,最后求一个最大字典序. 思路:要求最大的,即每一步都是最大,所以将最大的数都入队进行bfs跳下一步. 剪 ...
- HDU - 5876 Sparse Graph 2016 ACM/ICPC 大连网络赛 I题 bfs+set+补图最短路
题目链接 题意:给的补图,让你求一个源点到其他点的最短距离,因为图太稠密了, 用dij以及spfa根本不得行,这里只能用一种我不会方法来进行,这里用了bfs的方法以及set来维护,分别set维护一个未 ...
- 数据结构与算法(7-2)图的遍历(深度优先遍历DFS、广度优先遍历BFS)(分别用邻接矩阵和邻接表实现)
目录 深度优先遍历(DFS)和广度优先遍历(BFS)原理 1.自己的原理图 2.官方原理图 一.邻接矩阵的深度优先遍历(DFS) 1.原理图 2. 过程: 3.总代码 二.邻接表的深度优先遍历(DFS ...
- hiho_1139_二分+bfs搜索
题目 给定N个点和M条边,从点1出发,到达点T.寻找路径上边的个数小于等于K的路径,求出所有满足条件的路径中最长边长度的最小值. 题目链接:二分 最小化最大值,考虑采用二分搜索.对所有的边 ...
- fzu 2150 Fire Game 【身手BFS】
称号:fzu 2150 Fire Game :给出一个m*n的图,'#'表示草坪,' . '表示空地,然后能够选择在随意的两个草坪格子点火.火每 1 s会向周围四个格子扩散,问选择那两个点使得燃烧全部 ...
最新文章
- 2017-2018-1 20155201 实验五 通讯协议设计
- redis将散裂中某个值自增_Redis总结
- 走捷径修Bug却引起全球大宕机,Salesforce哭着处理了“肇事”工程师
- C++/C--STL API查询及免费教程网站
- Atitit 理解Monad attilax总结Atiti
- windows的消息机制
- 山东省计算机二级c语言题,2012计算机二级C语言题库.doc
- 2022软考中级软件设计师---易混淆知识点总结1
- Activity启动流程(二)system_server进程处理启动Activity请求
- 【小滴课堂】独孤求败-小滴云架构大课十八式
- numpy矩阵升维,拼接
- 两条线段的交点的计算
- Codec2入门:框架解析
- 保护水资源公益网站html,保护水资源公益广告策划书
- iOS APP 瘦身实战
- 专利撰写相关文档整理打包及相关基础知识打包
- python高效办公
- “对不起,我们不招半路出家的程序猿”
- [原创]JavaScript模拟ACDSEE简单功能
- xwpfdocument 保存修改_java使用POI操作XWPFDocument 生成Word实战(一)【比较详细的】...