[Sicily 1114 Food Cubes] 广度优先搜索
来源:互联网 发布:网络天才akinator很卡 编辑:程序博客网 时间:2024/04/30 01:09
(1)问题描述:
[Sicily 1114 Food Cubes]
对于三维空间的某一个坐标而言,如果它的上、下、左、右、前后都有food cubes的话,这个坐标就可以称之为一个hole。
现在给出所有food cubes的坐标,需要求出有多少个holes。
坐标x、y、z的范围都是1-100
(2)基本思路:
对于不是food cubes的坐标,进行广度优先搜索。
假设搜索完整个空间需要count次,则hole的个数是(count - 1)。
需要注意的是边界条件的判断(想象一个2乘2的立方体,左上角和右下角是food cubes,那么它的hole数应该是0,就可以知道为什么边界条件这样设置了)。
bool valid(int x, int y, int z){return (x >= 0 && x <= 101 && y >= 0 && y <= 101 && z >= 0 && z <= 101);}
(3)代码实现:
#include<iostream>#include<queue>using namespace std;#define MAX 102int cube[MAX][MAX][MAX];int dx[6] = {0, 0, 1, -1, 0, 0};int dy[6] = {0, 0, 0, 0, 1, -1};int dz[6] = {1, -1, 0, 0, 0, 0};struct Node{int x, y, z;Node(int _x, int _y, int _z){x = _x;y = _y;z = _z;}};bool valid(int x, int y, int z){return (x >= 0 && x <= 101 && y >= 0 && y <= 101 && z >= 0 && z <= 101);}void bfs(int sx, int sy, int sz){int tx;int ty;int tz;queue<Node> q;q.push(Node(sx, sy, sz));cube[sx][sy][sz] = 1;while(!q.empty()){Node top = q.front();for(int i = 0; i < 6; i++){tx = top.x + dx[i];ty = top.y + dy[i];tz = top.z + dz[i];if(valid(tx, ty, tz) && cube[tx][ty][tz] == 0){q.push(Node(tx, ty, tz));cube[tx][ty][tz] = 1;}}q.pop();}}int main(){int t;//number of test casescin >> t;while(t--){int m;//the number of food cubesint x, y, z;cin >> m;for(int i = 0; i < MAX; i++){for(int j = 0; j < MAX; j++){for(int l = 0; l < MAX; l++)cube[i][j][l] = 0;}}for(int i = 0; i < m; i++){cin >> x >> y >> z;cube[x][y][z] = 1;}int count = 0;for(int i = 0; i < MAX; i++){for(int j = 0; j < MAX; j++){for(int l = 0; l < MAX; l++){if(cube[i][j][l] == 0){bfs(i, j, l);count++;}}}}cout << count - 1 << endl;}return 0;}
0 0
- [Sicily 1114 Food Cubes] 广度优先搜索
- Sicily 1114 Food Cube(BFS广度优先搜索)
- Sicily 1114 Food Cubes
- Sicily.1114 Food Cubes
- sicily--1444(广度优先搜索)
- Sicily 图的广度优先搜索
- 1114 Food Cubes
- POJ 3126 && Sicily 1444 Prime Path (BFS广度优先搜索)
- 广度优先搜索算法
- 双向广度优先搜索
- 广度优先搜索法
- pku2251(广度优先搜索)
- POJ1184Clerver_Writer:广度优先搜索
- Java广度优先搜索
- [AI]广度优先搜索
- 广度优先搜索-BFS
- 广度优先搜索算法
- 广度优先搜索算法
- 【HDU 1396】 【ZOJ 1629】 Counting Triangles
- 库和框架
- Linux进程间通信方式--本地socket
- C++ 中临时对象 和 const 对象 的一个区别
- csv文件中有行字符串中有,的读取方法
- [Sicily 1114 Food Cubes] 广度优先搜索
- J2EE轻量级框架--4.03学习心得
- 苦瓜降火
- 修改数据库字符集为'us7ascii'
- 个人向LaTex总结
- 什么是指针?
- IT 团队管理
- 纯虚函数
- 初识redis