迷宫问题—Maze
来源:互联网 发布:淘宝刷大金额有技巧吗 编辑:程序博客网 时间:2024/04/29 02:34
/*BY:CHLAWS*/
/*求单一路径*/
#include<stdio.h>
#include<stdlib.h>
int visted(int i,int j);
/*2表示墙,0表示可以行走*/
int a[9][9]={
{2, 2, 2, 2, 2, 2, 2, 2, 2},
{2, 0, 0, 0, 0, 0, 0, 0, 2},
{2, 0, 2, 2, 0, 2, 2, 0, 2},
{2, 0, 2, 0, 0, 2, 0, 0, 2},
{2, 0, 2, 0, 2, 0, 2, 0, 2},
{2, 0, 0, 0, 0, 0, 2, 0, 2},
{2, 2, 0, 2, 2, 0, 2, 2, 2},
{2, 0, 0, 0, 0, 0, 0, 0, 2},
{2, 2, 2, 2, 2, 2, 2, 2, 2}
};
int success = 0; //标记
int startX=1,startY=1;//开始坐标
int endX=7,endY=7;//出口坐标
int main()
{
int i,j;
for(i=0; i<9; i++)
{
for(j=0; j<9; j++)
{
if(a[i][j] == 2)
{
printf("■");
}
else
printf("◇");
}
printf(" ");
}
if(!visted(startX,startY))
{
printf("no find exit! ");
}
else
{ /*画出找到的路径*/
printf(" ");
for(int x=0; x<9; x++)
{
for(int y=0; y<9; y++)
{
if(a[x][y] == 2)
printf("■");
else
if(a[x][y] == 1)
printf("★");
else
printf("◇");
}
printf(" ");
}
}
system("PAUSE");
return 0;
}
int visted(int i,int j)
{
a[i][j] = 1; /*假设是正确的路径*/
if(i==endX && j==endY)
success = 1; /*找到出口*/
/*四个方向的搜索*/
if(!success && a[i][j-1]==0) visted(i, j-1);
if(!success && a[i+1][j]==0) visted(i+1,j);
if(!success && a[i][j+1]==0) visted(i,j+1);
if(!success && a[i-1][j]==0) visted(i-1, j);
if(!success)
a[i][j] = 0; /*没找到路,取消假设的路径*/
return success;
}
#include<stdlib.h>
int visted(int i,int j);
/*2表示墙,0表示可以行走*/
int a[9][9]={
{2, 2, 2, 2, 2, 2, 2, 2, 2},
{2, 0, 0, 0, 0, 0, 0, 0, 2},
{2, 0, 2, 2, 0, 2, 2, 0, 2},
{2, 0, 2, 0, 0, 2, 0, 0, 2},
{2, 0, 2, 0, 2, 0, 2, 0, 2},
{2, 0, 0, 0, 0, 0, 2, 0, 2},
{2, 2, 0, 2, 2, 0, 2, 2, 2},
{2, 0, 0, 0, 0, 0, 0, 0, 2},
{2, 2, 2, 2, 2, 2, 2, 2, 2}
};
int success = 0; //标记
int startX=1,startY=1;//开始坐标
int endX=7,endY=7;//出口坐标
int main()
{
int i,j;
for(i=0; i<9; i++)
{
for(j=0; j<9; j++)
{
if(a[i][j] == 2)
{
printf("■");
}
else
printf("◇");
}
printf(" ");
}
if(!visted(startX,startY))
{
printf("no find exit! ");
}
else
{ /*画出找到的路径*/
printf(" ");
for(int x=0; x<9; x++)
{
for(int y=0; y<9; y++)
{
if(a[x][y] == 2)
printf("■");
else
if(a[x][y] == 1)
printf("★");
else
printf("◇");
}
printf(" ");
}
}
system("PAUSE");
return 0;
}
int visted(int i,int j)
{
a[i][j] = 1; /*假设是正确的路径*/
if(i==endX && j==endY)
success = 1; /*找到出口*/
/*四个方向的搜索*/
if(!success && a[i][j-1]==0) visted(i, j-1);
if(!success && a[i+1][j]==0) visted(i+1,j);
if(!success && a[i][j+1]==0) visted(i,j+1);
if(!success && a[i-1][j]==0) visted(i-1, j);
if(!success)
a[i][j] = 0; /*没找到路,取消假设的路径*/
return success;
}
/*求所有路径*/
/*基本上思路一样就不注释了*/
#include<stdio.h>
#include<stdlib.h>
void visted(int i,int j);
int a[9][9]={
{2, 2, 2, 2, 2, 2, 2, 2, 2},
{2, 0, 0, 0, 0, 0, 0, 0, 2},
{2, 0, 2, 2, 0, 2, 2, 0, 2},
{2, 0, 2, 0, 0, 2, 0, 0, 2},
{2, 0, 2, 0, 2, 0, 2, 0, 2},
{2, 0, 0, 0, 0, 0, 2, 0, 2},
{2, 2, 0, 2, 2, 0, 2, 2, 2},
{2, 0, 0, 0, 0, 0, 0, 0, 2},
{2, 2, 2, 2, 2, 2, 2, 2, 2}
};
int startX=1,startY=1;
int endX=7,endY=7;
int main()
{
int i,j;
for(i=0; i<9; i++)
{
for(j=0; j<9; j++)
{
if(a[i][j] == 2)
{
printf("■");
}
else
printf("◇");
}
printf(" ");
}
visted(startX,startY);
system("PAUSE");
return 0;
}
void visted(int i,int j)
{
a[i][j] = 1;
if(i==endX && j==endY)
{
printf(" ");
for(int x=0; x<9; x++)
{
for(int y=0; y<9; y++)
{
if(a[x][y] == 2)
printf("■");
else
if(a[x][y] == 1)
printf("★");
else
printf("◇");
}
printf(" ");
}
}
if(a[i][j+1]==0) visted(i,j+1);
if(a[i+1][j]==0) visted(i+1,j);
if(a[i-1][j]==0) visted(i-1, j);
if(a[i][j-1]==0) visted(i, j-1);
a[i][j] = 0;
}
/*基本上思路一样就不注释了*/
#include<stdio.h>
#include<stdlib.h>
void visted(int i,int j);
int a[9][9]={
{2, 2, 2, 2, 2, 2, 2, 2, 2},
{2, 0, 0, 0, 0, 0, 0, 0, 2},
{2, 0, 2, 2, 0, 2, 2, 0, 2},
{2, 0, 2, 0, 0, 2, 0, 0, 2},
{2, 0, 2, 0, 2, 0, 2, 0, 2},
{2, 0, 0, 0, 0, 0, 2, 0, 2},
{2, 2, 0, 2, 2, 0, 2, 2, 2},
{2, 0, 0, 0, 0, 0, 0, 0, 2},
{2, 2, 2, 2, 2, 2, 2, 2, 2}
};
int startX=1,startY=1;
int endX=7,endY=7;
int main()
{
int i,j;
for(i=0; i<9; i++)
{
for(j=0; j<9; j++)
{
if(a[i][j] == 2)
{
printf("■");
}
else
printf("◇");
}
printf(" ");
}
visted(startX,startY);
system("PAUSE");
return 0;
}
void visted(int i,int j)
{
a[i][j] = 1;
if(i==endX && j==endY)
{
printf(" ");
for(int x=0; x<9; x++)
{
for(int y=0; y<9; y++)
{
if(a[x][y] == 2)
printf("■");
else
if(a[x][y] == 1)
printf("★");
else
printf("◇");
}
printf(" ");
}
}
if(a[i][j+1]==0) visted(i,j+1);
if(a[i+1][j]==0) visted(i+1,j);
if(a[i-1][j]==0) visted(i-1, j);
if(a[i][j-1]==0) visted(i, j-1);
a[i][j] = 0;
}
- 迷宫问题—Maze
- Maze迷宫问题(最优解)
- 迷宫问题Maze (BFS) 广度优先遍历 C语言
- 迷宫MAZE(数据结构)
- 走出迷宫 Maze
- hero in maze 迷宫
- Word Maze(单词迷宫)
- Word Maze 单词迷宫
- Word Maze(单词迷宫)
- 栈----迷宫(Maze)
- 迷宫问题(maze problem)——深度优先(DFS)与广度优先搜索(BFS)求解
- 费用流——危险的迷宫maze
- uva 784 Maze Exploration(迷宫探索) —— DFS
- uva 705 Slash Maze(斜线迷宫) —— DFS
- 走迷宫 the maze problem
- BFS经典例题:Maze迷宫
- Word Maze(单词迷宫)
- USACO 玉米田迷宫 Corn Maze
- java经典积累
- asp.net数据控件 数据绑定控件比较
- 如何用JS判断WEB控件[同时含有WEB控件和HTML控件]
- 用C#实现mail送信
- Eval的数据绑定用法[可进行判断]
- 迷宫问题—Maze
- C#的一些常用文件操作方法[极好]
- js控制文本框只能输入数字 及 常用字符对应ASCII码值
- 安装Apache和PHP
- js的正则表达式---的一些总结
- 精通Cobol:大型机商业编程技术详解 目录
- JavaScript常用检测脚本实例代码[正则表达式]
- tcl/tk实例详解——glob使用例解
- 回发或回调参数无效。在配置中使用 ...