网站开发技术总结报告,深圳人才引进入户申请官网,做渔船的网站,做音乐网站的条件目录 引言1.题目描述及思想2.代码实现3.最终结果 引言
这个迷宫的话就是去年这时候#xff0c;我记得当时讲这个的时候我还是一脸懵逼#xff0c;就是事后花时间能够看懂#xff0c;能够理解#xff0c;但是自己肯定是不能够实现的#xff0c;而且觉得这个东西非常的庞大… 目录 引言1.题目描述及思想2.代码实现3.最终结果 引言
这个迷宫的话就是去年这时候我记得当时讲这个的时候我还是一脸懵逼就是事后花时间能够看懂能够理解但是自己肯定是不能够实现的而且觉得这个东西非常的庞大很困难的样子然后现在的话我已经有足够的思维去想并且能够完全自己一个人去实现了然后我觉得很好不多说上代码。
1.题目描述及思想
给了一个迷宫然后1代表墙0代表路你可以上下左右移动然后我自己的设计就是走过的路能通设置为8走不通但走过设置为4 {1, 1, 1, 1, 1, 1, 1, 1, 1},{0, 0, 1, 0, 0, 0, 1, 1, 1},{1, 0, 1, 1, 1, 0, 1, 1, 1},{1, 0, 0, 1, 0, 0, 1, 1, 1},{1, 1, 0, 1, 1, 0, 0, 0, 1},{1, 0, 0, 0, 0, 0, 1, 0, 1},{1, 0, 1, 0, 1, 0, 0, 0, 1},{1, 1, 0, 0, 0, 0, 1, 0, 0},{1, 1, 1, 1, 1, 1, 1, 1, 1}2.代码实现
#includeiostreamusing namespace std;//[0,0] - [9,9]
const int N 9;
int maze[N][N] {{1, 1, 1, 1, 1, 1, 1, 1, 1},{0, 0, 1, 0, 0, 0, 1, 1, 1},{1, 0, 1, 1, 1, 0, 1, 1, 1},{1, 0, 0, 1, 0, 0, 1, 1, 1},{1, 1, 0, 1, 1, 0, 0, 0, 1},{1, 0, 0, 0, 0, 0, 1, 0, 1},{1, 0, 1, 0, 1, 0, 0, 0, 1},{1, 1, 0, 0, 0, 0, 1, 0, 0},{1, 1, 1, 1, 1, 1, 1, 1, 1}
};bool used[N][N];
int dir[4][2] { 0,-1,1,0,-1,0,0,1};
int endx 7, endy 8;bool dfs(int x, int y) //代表当前到达的下标
{if (x endx y endy) //如果已经到达终点 返回true{maze[x][y] 8;used[x][y] true;return true;}for (int i 0; i 4; i) //四个方向不断递归{int a x dir[i][0];int b y dir[i][1];if (a 0 || a N || b 0 || b N) continue; //越界换方向if (maze[a][b] 1 || used[a][b]) continue; //是墙壁 或者走过了 换方向used[a][b] true;maze[a][b] 8;if (dfs(a, b)) //如果能通返回true{maze[a][b] 8;return true;}maze[a][b] 4; //不通设置为4然后换个方向}return false; //如果4个方向都不行返回false
}void Print()
{for (int i 0; i N; i){for (int j 0; j N; j){printf(%4d, maze[i][j]);}puts();}puts();
}int main()
{Print();used[1][0] true;maze[1][0] 8;dfs(1, 0);Print();return 0;
}3.最终结果