uva572 -- Oil Deposits
来源:互联网 发布:周立功单片机同类公司 编辑:程序博客网 时间:2024/05/29 13:26
题目链接
这一题是求图中连通块的个数,连通是指八连通,即上下左右和对角线共八个点,可以使用DFS或BFS来解决此题,下面给出两种方式的AC代码:
DFS代码:
#include <iostream>#include <cstring>#include <cstdio>using namespace std;const int N=100+10;char maze[N][N]; //存储迷宫int visit[N][N]; //0未访问,1访问过int dir[8][2]={{-1,1},{0,1},{1,1},{1,0},{1,-1},{0,-1},{-1,-1},{-1,0}}; //八连通int m,n; //行列数int cnt; //连通块个数void dfs(int r,int c){ for(int i=0;i<8;i++) { int nextr=r+dir[i][0]; int nextc=c+dir[i][1]; if(nextr>=0&&nextr<m&&nextc>=0&&nextc<n&&maze[nextr][nextc]=='@'&&!visit[nextr][nextc]) { visit[nextr][nextc]=1; dfs(nextr,nextc); } }}int main(){ //freopen("test.txt","r",stdin); while(cin>>m>>n&&m&&n) { cnt=0; memset(maze,'\0',sizeof(maze)); memset(visit,0,sizeof(visit)); for(int i=0;i<m;i++) scanf("%s",maze[i]); for(int i=0;i<m;i++) for(int j=0;j<n;j++) { if(maze[i][j]=='@'&&!visit[i][j]) { dfs(i,j); cnt++; } } printf("%d\n",cnt); } return 0;}
BFS代码:
#include <iostream>#include <cstring>#include <cstdio>#include <queue>using namespace std;struct Node{ int r; int c; Node(int r,int c):r(r),c(c){}};queue<Node> q;const int N=100+10;int m,n; //行列数char maze[N][N]; //存储迷宫int visit[N][N]; //0未访问,1访问过int dir[8][2]={{-1,1},{0,1},{1,1},{1,0},{1,-1},{0,-1},{-1,-1},{-1,0}}; //八连通int cnt; //连通块个数void bfs(){ while(!q.empty()) { Node node=q.front(); q.pop(); for(int i=0;i<8;i++) { int nextr=node.r+dir[i][0]; int nextc=node.c+dir[i][1]; if(nextr>=0&&nextr<m&&nextc>=0&&nextc<n&&maze[nextr][nextc]=='@'&&!visit[nextr][nextc]) { visit[nextr][nextc]=1; q.push(Node(nextr,nextc)); } } }}int main(){ //freopen("test.txt","r",stdin); while(cin>>m>>n&&m&&n) { cnt=0; memset(maze,'\0',sizeof(maze)); memset(visit,0,sizeof(visit)); for(int i=0;i<m;i++) scanf("%s",maze[i]); for(int i=0;i<m;i++) for(int j=0;j<n;j++) { if(maze[i][j]=='@'&&!visit[i][j]) { q.push(Node(i,j)); bfs(); cnt++; } } printf("%d\n",cnt); } return 0;}
0 0
- uva572 - Oil Deposits 油矿
- uva572 - Oil Deposits
- Oil Deposits UVA572
- UVa572 Oil Deposits(DFS)
- UVa572 - Oil Deposits
- UVA572 - Oil Deposits
- uva572 Oil Deposits
- UVA572 Oil Deposits dfs
- uva572 Oil Deposits
- UVa572-Oil Deposits
- uva572 -- Oil Deposits
- uva572 Oil Deposits
- Uva572——Oil Deposits
- HDU1241 POJ1562 UVa572 Oil Deposits
- uva572--oil deposits--dfs算法
- uva572 Oil Deposits(启发DFS)
- UVA572 HDU1241 POJ1562 Oil Deposits【DFS】
- 例题6-12 UVa572 Oil Deposits(DFS)
- 选择语句 while 和do..while
- gcc-stack-protector机制
- Android屏幕适配方案http://blog.csdn.net/lmj623565791/article/details/45460089
- React入门学习
- 国际专利分类表(2016版)
- uva572 -- Oil Deposits
- java_集合
- CSS常用标签
- HDU 1998奇数阶魔方
- ReactNative-WebView组件
- Mysql处理海量数据时的一些优化查询速度方法
- 欢迎使用CSDN-markdown编辑器
- strlen的使用注意事项
- 一个SDI程序基于CFormView视。上面放一个CStatic控件,给视图添加双击消息,运行程序后,双击视图,会有弹出消息响应。 但是双击CStatic类控件,却没有响应