hdoj1072,Nightmare
来源:互联网 发布:ubuntu golang 安装 编辑:程序博客网 时间:2024/06/08 15:22
1.利用广搜。看到求最小值就这样做了
2.不能标记已经走过的。原来标记了,但是后来去掉了。可以看到node里面还有布尔值,但是下面没有用
3.但是利用前后两个点的时间剩余比较来代替了。这样在题目给出的第三个测试例子里是可以在走过4之后再
走走过的路,但是一般没有走过4就不行。
4.从文件读入读出也没有办到。一会看看。
5.第一次自己做出来题一次ac。
6.最小时间和剩余步数也是两个不同的问题
2.不能标记已经走过的。原来标记了,但是后来去掉了。可以看到node里面还有布尔值,但是下面没有用
3.但是利用前后两个点的时间剩余比较来代替了。这样在题目给出的第三个测试例子里是可以在走过4之后再
走走过的路,但是一般没有走过4就不行。
4.从文件读入读出也没有办到。一会看看。
5.第一次自己做出来题一次ac。
6.最小时间和剩余步数也是两个不同的问题
#include<iostream>#include<queue>#include<fstream>using namespace std;//n,m的值不超过8.开到10const int con1 = 10;int n,m;int nextX[4] = {0,1, 0,-1};int nextY[4] = {1,0,-1,0};struct Node{int x;int y;//这个点的值int v;//剩下的时间int t;bool b;//走得步数int s;};//标志是否找到路径bool flag = false;//储存迷宫的值Node maze[con1][con1];//起始点int sx,sy;//记录最短用时int minTime;//广搜void bfs();int main(){int t;cin >>t;while(t--){cin >> n>>m;for (int i = 0; i < n; i++ ){for (int j = 0; j < m; j++ ){//初始化迷宫的值cin >> maze[i][j].v;maze[i][j].x = i;maze[i][j].y = j;maze[i][j].t = 0;maze[i][j].s = 0;if(maze[i][j].v==2){sx = i;sy = j;maze[i][j].t = 6;}}}//别忘了每次开始之前吧这些值初始化一下,不然就容易错minTime = 0;flag = false;bfs();if(flag)cout << minTime<<endl;else cout << -1<<endl;}return 0;}void bfs(){queue<Node> q;Node node = maze[sx][sy];q.push(node);while(!q.empty()){node = q.front();q.pop();if(node.t <=1)continue;for ( int i = 0; i < 4; i++ ){int nx = node.x+nextX[i];int ny = node.y+nextY[i];if(nx<0||nx>=n||ny>=m||ny<0)continue;//对比现在与下一个的剩余时间决定是否前进if(maze[nx][ny].v!=0&&maze[nx][ny].t<node.t-1){//步数加,时间减maze[nx][ny].s = node.s+1;maze[nx][ny].t = node.t-1; if(maze[nx][ny].v==3){minTime = maze[nx][ny].s;flag = true;return;}else if(maze[nx][ny].v==4){maze[nx][ny].t=6;}q.push(maze[nx][ny]);}}}}
0 0
- hdoj1072 Nightmare
- hdoj1072,Nightmare
- HDOJ1072 Nightmare(BFS,剪枝)
- hdoj1072 Nightmare(bfs寻找最短时间)
- HDOJ1072 Nightmare(记忆化DFS/BFS)
- hdoj1072
- Nightmare
- Nightmare
- Nightmare
- Nightmare
- Nightmare
- Nightmare
- Nightmare
- Nightmare
- Nightmare
- Nightmare
- Nightmare
- Nightmare
- chrome设置UA
- 关于listview下拉刷新中滑动时会点进item的问题
- 树的中心
- 【网络】(三)流协议粘包问题
- 项目阶段总结
- hdoj1072,Nightmare
- Spring注解大全以及案例
- C#调用Excel VBA宏
- 实模式、保护模式以及虚拟80806方式简介
- iGriamceV8.0 IG8.0.0 iOS8 V8基本设置和使用教程图
- Java 驼峰与下划线的属性名互相转换
- C++中智能指针的设计和使用
- c++ Handle类的理解(2)
- 【算法】求两个字符串的最长子串