ZOJ 1047 Image Perimeters(BFS搜索)
来源:互联网 发布:万方医药数据信息平台 编辑:程序博客网 时间:2024/05/20 00:48
题目比较长,题目中给你解释了一个样例。
我大概说一下题目的意思,题目给你一个地图,包含字符X和.。
给你一个起点,让你从8个方向去搜索,找X连通块的周长。
如果还没太理解,可以看下题目中图二的例子,题目给定的起点就是2,3;
从这个起点出发,往8个方向扩展以后得到的连通块就是图中圈出来的部分。
这一部分的周长数一数,可以数出来是18。
这一道题目的数据范围比较小,行和列只有20.可以用搜索做。
这里我用的是广度优先搜索BFS。
处理周长的方法:当以一个点为出发点出发时,搜索8个方向,如果这8个方向中的
上 左 下 右这四个方向有一个方向没有X,周长就加1
我大概说一下题目的意思,题目给你一个地图,包含字符X和.。
给你一个起点,让你从8个方向去搜索,找X连通块的周长。
如果还没太理解,可以看下题目中图二的例子,题目给定的起点就是2,3;
从这个起点出发,往8个方向扩展以后得到的连通块就是图中圈出来的部分。
这一部分的周长数一数,可以数出来是18。
这一道题目的数据范围比较小,行和列只有20.可以用搜索做。
这里我用的是广度优先搜索BFS。
处理周长的方法:当以一个点为出发点出发时,搜索8个方向,如果这8个方向中的
上 左 下 右这四个方向有一个方向没有X,周长就加1
这样处理下来得到的就是答案
#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<functional>#include<queue>using namespace std;int n,m,s,e,sum;char maps[200][200];int vis[200][200];int next[8][2]={-1,0,0,-1,1,0,0,1,-1,-1,1,-1,1,1,-1,1};//方向数组//上 左 下 右 左上 左下 右下 右上struct node{int x,y;}k,tmp;queue<node> que;void bfs(){int x,y,i;while(que.size()){k=que.front();que.pop();for(i=0;i<8;i++){x=k.x+next[i][0]; y=k.y+next[i][1];if(maps[x][y]=='X'&&!vis[x][y]){tmp.x=x;tmp.y=y;vis[x][y]=1;que.push(tmp);}else if(i<=3&&maps[x][y]!='X')//上左下右四个方向sum++;}}}int main(){int i,j;while(scanf("%d%d%d%d",&n,&m,&s,&e)!=EOF){sum=0;memset(maps,0,sizeof(maps));memset(vis,0,sizeof(vis));//清空标记getchar();if(n==0&&m==0&&s==0&&e==0)break;for(i=1;i<=n;i++){for(j=1;j<=m;j++)scanf("%c",&maps[i][j]);getchar();}tmp.x=s; tmp.y=e;vis[s][e]=1;que.push(tmp);bfs();printf("%d\n",sum);}return 0;}
阅读全文
0 0
- ZOJ 1047 Image Perimeters(BFS搜索)
- ZOJ 1047Image Perimeters (BFS)
- 深度优先搜索-ZOJ 1047 Image Perimeters
- ZOJ 1047 Image Perimeters
- ZOJ 1047 Image Perimeters
- ZOJ 1047 Image Perimeters
- ZOJ 1047 Image Perimeters
- ZOJ - 1047 Image Perimeters
- ZOJ 1047 Image Perimeters
- ZOJ 1047 Image Perimeters
- ZOJ 1047 Image Perimeters(dfs+技巧)
- ZOJ 1047 Image Perimeters (dfs)
- zoj 1047 || poj 1111 Image Perimeters(DFS water~)
- poj 1111||zoj 1047 Image Perimeters(dfs)
- zoj 1047 Image Perimeters
- POJ-1111---Image Perimeters (bfs)
- hdu 1047 Image Perimeters
- POJ 1111 Image Perimeters【单身快乐】【Bfs】
- HDU6124(有趣的数学题)
- matlab矩阵的表示和简单操作
- 七、改进神经网络的学习方法(3):过拟合及改进方法(正则化、Dropout)
- Multivariate Time Series Forecasting with LSTMs in Keras 中文版翻译
- Score UVA
- ZOJ 1047 Image Perimeters(BFS搜索)
- Array.prototype.map()详解
- jstl 使用<c:if></c:if>时报错
- HDU 6129
- 主席树
- 深入理解java多态
- 几何板子
- VX Search Client 9.7.18 漏洞分析及利用
- 一个场景与另一个场景之间的通信