迷宫出路
2016-04-21 12:57
323 查看
#include<iostream> using namespace std; typedef struct node { int i,j; int pre; }*ptrn; void main() { ptrn *quelist; quelist=new ptrn[100]; int front=0,rear=0; int matrix[10][10]={ {1,1,1,1,1,1,1,1,1,1}, {1,0,0,1,0,0,0,1,0,1}, {1,0,0,1,0,0,0,1,0,1}, {1,0,0,0,0,1,1,0,0,1}, {1,0,1,1,1,0,0,0,0,1}, {1,0,0,0,1,0,0,0,0,1}, {1,0,1,0,0,0,1,0,0,1}, {1,0,1,1,1,0,1,1,0,1}, {1,1,0,0,0,0,0,0,0,1}, {1,1,1,1,1,1,1,1,1,1}}; cout<<"请输入入口在矩阵中的行位置和列位置"<<endl; int i1,j1; cin>>i1>>j1; cout<<"请输入出口在矩阵中的行位置和列位置"<<endl; int i2,j2; cin>>i2>>j2; ptrn stnode; stnode=new node; stnode->i=i1; stnode->j=j1; stnode->pre=-1; quelist[0]=stnode; rear=1; while(1) { if(quelist[front]->i!=i2||quelist[front]->j!=j2) { int i3=quelist[front]->i; int j3=quelist[front]->j; if(matrix[i3][j3+1]==0) { quelist[rear]=new node; quelist[rear]->i=i3; quelist[rear]->j=j3+1; quelist[rear]->pre=front; matrix[i3][j3+1]=1; rear++; } if(matrix[i3+1][j3]==0) { quelist[rear]=new node; quelist[rear]->i=i3+1; quelist[rear]->j=j3; quelist[rear]->pre=front; matrix[i3+1][j3]=1; rear++; } if(matrix[i3][j3-1]==0) { quelist[rear]=new node; quelist[rear]->i=i3; quelist[rear]->j=j3-1; quelist[rear]->pre=front; matrix[i3][j3-1]=1; rear++; } if(matrix[i3-1][j3]==0) { quelist[rear]=new node; quelist[rear]->i=i3-1; quelist[rear]->j=j3; quelist[rear]->pre=front; matrix[i3-1][j3]=1; rear++; } front++; if(front==rear+1) { cout<<"无路径"<<endl; break; } } else { break; } } while(1) { if(quelist[front]->pre==-1) { cout<<"["<<quelist[front]->i<<","<<quelist[front]->j<<"]"<<endl; break; } else { cout<<"["<<quelist[front]->i<<","<<quelist[front]->j<<"]"<<endl; } front=quelist[front]->pre; } }
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- 关于指针的一些事情
- c++ primer 第五版 笔记前言
- share_ptr的几个注意点
- Lua中调用C++函数示例
- Lua教程(一):在C++中嵌入Lua脚本
- Lua教程(二):C++和Lua相互传递数据示例
- C++联合体转换成C#结构的实现方法
- C++高级程序员成长之路
- C++编写简单的打靶游戏
- C++ 自定义控件的移植问题
- C++变位词问题分析
- C/C++数据对齐详细解析
- C++基于栈实现铁轨问题
- C++中引用的使用总结
- 使用Lua来扩展C++程序的方法
- C++中调用Lua函数实例
- Lua和C++的通信流程代码实例
- C与C++之间相互调用实例方法讲解
- 解析C++中派生的概念以及派生类成员的访问属性