迷宫问题bsf ACM第三次培训
2016-11-30 08:42
218 查看
#include<stdio.h> #include<string.h> #include<math.h> #include<stdlib.h> #include<algorithm> #include<iostream> #include<queue> using namespace std; int maze[5][5]; int map_sign[5][5] = { 0 }; int d[4][2] = { 0,1,1,0,0,-1,-1,0 }; struct node { int x, y, p; }; struct node_record { int x, y; int last; }; node_record s1[1000]; int extend() { int i = 0; queue <node> q; queue<int> q_num; node s,e; s.x = 0; s.y = 0; s1[0].last = -1; //s.p=0 s1[0].x = 0; s1[0].y = 0; //node_record *p=&s1[0]; map_sign[0][0] = 1; q.push(s); int r = 0; q_num.push(r); int t; while(!q.empty()) { e = q.front(); q.pop(); if(e.x==4 && e.y==4) { return q_num.front(); } t = q_num.front(); for(int k=0;k<4;k++) { s.x = e.x + d[k][0]; s.y = e.y + d[k][1]; if(s.x<0 || s.x>4 || s.y<0 || s.y>4 || map_sign[s.x][s.y]==1 ||maze[s.x][s.y]==1 ) { continue; } i++; s1[i].x = s.x; s1[i].y = s.y; s1[i].last = t; //p = &s1[i]; map_sign[s.x][s.y] = 1; q.push(s); q_num.push(i); } q_num.pop(); } } void reprintf(int x) { if(s1[x].last==-1) { printf("(%d, %d)\n", s1[x].x, s1[x].y); } else { reprintf(s1[x].last); printf("(%d, %d)\n", s1[x].x, s1[x].y); } } int main() { int n, m; n = m = 5; for(int i=0;i<n;i++) { for(int j=0;j<m;j++) { scanf("%d", &maze[i][j]); } } int last = extend(); reprintf(last); return 0; }
相关文章推荐
- 迷宫最短路径问题(maze)acmclub.com 1102
- acm第三次培训3 Problem D: 哧溜的位运算2
- ACM水题-Rescue LK(AC,迷宫问题,DFS求解)
- acm第三次培训 Problem A: 求逆转数
- ACM迷宫问题java描述
- ACM 迷宫问题 poj3984(c语言)
- ACM培训第二周了
- 迷宫问题
- 技术及培训问题讨论专贴。[学员必看]
- 迷宫问题求解(C++递归程序)
- 迷宫(Maze)问题 递归解
- TeamSystem 培训,问题收集
- 迷宫问题求解(C++非递归程序)
- ACM培训第三周总结
- 数据结构(C语言)例子连载(2)====迷宫问题
- 迷宫问题(编译环境 DevC++)
- 有关信息管理人员需要接受哪些培训的问题
- 安装Visual Studio 6的"Error Lauching acmboot.exe"问题解决方法
- 暑假经历之ACM培训第七天--做一个简单题目安慰一下
- MS SQL SERVER培训用问题集锦