自己写的一个迷宫问题C语言
来源:互联网 发布:淘宝代购奶粉靠谱吗 编辑:程序博客网 时间:2024/04/29 00:39
#include <iostream>#include <fstream>#include<stack>using namespace std;struct Pos{ int x; int y; int di;};void mazePath();void printMazePath();#define MAZE_SIZE = 10////定义一个迷宫,0表示通道,1表示墙int maze[10][10] = {{0,1,1,1,1,1,1,1,1,1},{0,0,0,1,1,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,0,0}};stack <Pos> posStack;int xe = 9;int ye = 9;ofstream ff("me.txt");int main(void){ Pos pos; pos.x = 0; pos.y = 0; pos.di = 0; posStack.push(pos); mazePath(); system("PAUSE"); return 0;}void mazePath(){ if(posStack.empty()) { //ff<<"No answer"<<endl; return; } Pos pos = posStack.top(); if(pos.x==xe && pos.y==ye) { //ff<<"Over"<<endl; printMazePath(); //以下代码开启,表示求出所有可能路径 posStack.pop(); maze[pos.y][pos.x] = 0; mazePath(); return; } if(pos.di<4) { int nextX; int nextY; switch(pos.di) { case 0: nextX = pos.x+1; nextY = pos.y; break; case 1: nextX = pos.x; nextY = pos.y+1; break; case 2: nextX = pos.x-1; nextY = pos.y; break; case 3: nextX = pos.x; nextY = pos.y-1; break; default: break; } if((nextX>=0 && nextX<10) && (nextY>=0 && nextY<10) && (maze[nextY][nextX]==0)) { pos.di += 1; posStack.pop(); posStack.push(pos); Pos nextPos; nextPos.di = 0; nextPos.x = nextX; nextPos.y = nextY; posStack.push(nextPos); maze[pos.y][pos.x] = -1; //ff<<"NextOK"<<" "<<pos.x<<" "<<pos.y<<" "<<pos.di-1<<endl; mazePath(); } else { pos.di += 1; posStack.pop(); posStack.push(pos); //ff<<"NextNotOK"<<" "<<pos.x<<" "<<pos.y<<" "<<pos.di<<endl; mazePath(); } } else { //该位置不同,从栈顶删除,且mg[][]=0 //ff<<"Back"<<" "<<pos.x<<" "<<pos.y<<" "<<pos.di<<endl; posStack.pop(); maze[pos.y][pos.x] = 0; mazePath(); } }void printMazePath(){ stack <Pos> backupStack; ff<<"Path:"; while(!posStack.empty()) { Pos pos = posStack.top(); posStack.pop(); backupStack.push(pos); } while(!backupStack.empty()) { Pos pos = backupStack.top(); backupStack.pop(); posStack.push(pos); ff<<"<"<<pos.x<<","<<pos.y<<"> "; } ff<<endl;}
0 0
- 自己写的一个迷宫问题C语言
- (数据结构作业)用C语言写的一个迷宫
- 纯C语言写的:迷宫游戏
- 学C语言自己写的一个程序
- 自己写的一个猜拳小游戏(C语言)
- c语言自己写一个.h的头文件
- 八皇后问题,自己写的c语言
- 迷宫问题的C语言求解
- c写的迷宫
- C-055.自己用C语言写的一个正整数的十进制转二进制的代码
- 自己写的C语言简单万年历
- 自己写的c语言哥德巴赫猜想
- 迷宫问题C语言实现
- 迷宫问题C语言解法
- 迷宫问题--C语言实现
- c语言之迷宫问题
- c语言 走迷宫问题
- 贴上自己的一个python写的去c语言注释的小脚本,以备后用
- socket
- Binary Tree Maximum Path Sum
- STL 整理(map、set、vector、list、stack、queue、deque、priority_queue)
- WIFI小车之旅(一)
- 高效运维最佳实践
- 自己写的一个迷宫问题C语言
- 关于c++结构体内存对齐问题
- 如何在xcode中创建新的文件和文件夹
- Yii2.0数据筛选功能
- 结构体总结(结构体定义,赋值,访问)
- FusionCharts在Java中的基本使用
- 软件专家的对话模式
- eclipse 本地工程单元测试出现can not run program"XXXX/javaw.exe" error=87
- ***LightOJ 1123Trail Maintenance(kruskal+环内删除权值最大边)