c语言 走迷宫问题
来源:互联网 发布:正方形的风管知乎 编辑:程序博客网 时间:2024/05/19 04:07
#include<stdio.h>
#define N 10
int main(){
char maze[N][N] = {
'#', ' ', '#', '#', '#', '#', '#', '#', '#', '#',
'#', ' ', ' ', '#', ' ', ' ', ' ', '#', ' ', '#',
'#', ' ', ' ', '#', ' ', ' ', ' ', '#', ' ', '#',
'#', ' ', ' ', ' ', ' ', '#', '#', ' ', ' ', '#',
'#', ' ', '#', '#', '#', ' ', ' ', ' ', ' ', '#',
'#', ' ', ' ', ' ', '#', ' ', '#', ' ', '#', '#',
'#', ' ', '#', ' ', ' ', ' ', '#', ' ', ' ', '#',
'#', ' ', '#', '#', '#', ' ', '#', '#', ' ', '#',
'#', '#', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',
'#', '#', '#', '#', '#', '#', '#', '#', '#', '#'
};
char copy[N][N];
int row, line, i, j;
char face;
for (i = 0; i < N; i++){
for (j = 0; j < N; j++){
copy[i][j] = maze[i][j];
}
}
//north,south,east,west
//find the entrance or end
//优先向右向前再向左转
for (i = 0; i < N; i++){
if (maze[0][i] == ' '){ row = 0; line = i; break; }
if (maze[i][0] == ' '){ row = i; line = 0; break; }
if (maze[N - 1][i] == ' '){ row = N - 1; line = i; break; }
if (maze[i][N - 1] == ' '){ row = i; line = N - 1; break; }
}
copy[row][line] = 'o';
if (row == 0){
face = 's';
row++;
}
if (line == 0){
face = 'e';
line++;
}
if (row == N - 1){
face = 'n';
row--;
}
if (line == N - 1){
face = 'w';
line--;
}
copy[row][line] = 'o';
while (row != (N - 1) && row != 0 && line != 0 && line != (N - 1)){
switch (face){
case 's': //south
if (maze[row][line - 1] == ' '){
line--;
face = 'w';
}
else{
if (maze[row + 1][line] == ' '){
row++;
}
else {
if (maze[row][line + 1] == ' '){
line++;
face = 'e';
}
else {
row--;
face = 'n';
}
}
}
copy[row][line] = 'o';
break; //end south
case 'n': //north
if (maze[row][line + 1] == ' '){
line++;
face = 'e';
}
else{
if (maze[row - 1][line] == ' '){
row--;
}
else {
if (maze[row][line - 1] == ' '){
line--;
face = 'w';
}
else {
row++;
face = 's';
}
}
}
copy[row][line] = 'o';
break; //end north
case 'w': //west
if (maze[row - 1][line] == ' '){
row--;
face = 'n';
}
else{
if (maze[row][line - 1] == ' '){
line--;
}
else {
if (maze[row + 1][line] == ' '){
row++;
face = 's';
}
else {
line++;
face = 'e';
}
}
}
copy[row][line] = 'o';
break;//end west
case 'e': //east
if (maze[row + 1][line] == ' '){
row++;
face = 's';
}
else{
if (maze[row][line + 1] == ' '){
line++;
}
else {
if (maze[row - 1][line] == ' '){
line++;
face = 'n';
}
else {
line--;
face = 'w';
}
}
}
copy[row][line] = 'o';
break;//end east
default:printf("无出口");
}
}//end while
for (i = 0; i < N; i++){
for (j = 0; j < N; j++){
printf("%c ", copy[i][j]);
}
printf("\n");
}
return 0;
}
#define N 10
int main(){
char maze[N][N] = {
'#', ' ', '#', '#', '#', '#', '#', '#', '#', '#',
'#', ' ', ' ', '#', ' ', ' ', ' ', '#', ' ', '#',
'#', ' ', ' ', '#', ' ', ' ', ' ', '#', ' ', '#',
'#', ' ', ' ', ' ', ' ', '#', '#', ' ', ' ', '#',
'#', ' ', '#', '#', '#', ' ', ' ', ' ', ' ', '#',
'#', ' ', ' ', ' ', '#', ' ', '#', ' ', '#', '#',
'#', ' ', '#', ' ', ' ', ' ', '#', ' ', ' ', '#',
'#', ' ', '#', '#', '#', ' ', '#', '#', ' ', '#',
'#', '#', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',
'#', '#', '#', '#', '#', '#', '#', '#', '#', '#'
};
char copy[N][N];
int row, line, i, j;
char face;
for (i = 0; i < N; i++){
for (j = 0; j < N; j++){
copy[i][j] = maze[i][j];
}
}
//north,south,east,west
//find the entrance or end
//优先向右向前再向左转
for (i = 0; i < N; i++){
if (maze[0][i] == ' '){ row = 0; line = i; break; }
if (maze[i][0] == ' '){ row = i; line = 0; break; }
if (maze[N - 1][i] == ' '){ row = N - 1; line = i; break; }
if (maze[i][N - 1] == ' '){ row = i; line = N - 1; break; }
}
copy[row][line] = 'o';
if (row == 0){
face = 's';
row++;
}
if (line == 0){
face = 'e';
line++;
}
if (row == N - 1){
face = 'n';
row--;
}
if (line == N - 1){
face = 'w';
line--;
}
copy[row][line] = 'o';
while (row != (N - 1) && row != 0 && line != 0 && line != (N - 1)){
switch (face){
case 's': //south
if (maze[row][line - 1] == ' '){
line--;
face = 'w';
}
else{
if (maze[row + 1][line] == ' '){
row++;
}
else {
if (maze[row][line + 1] == ' '){
line++;
face = 'e';
}
else {
row--;
face = 'n';
}
}
}
copy[row][line] = 'o';
break; //end south
case 'n': //north
if (maze[row][line + 1] == ' '){
line++;
face = 'e';
}
else{
if (maze[row - 1][line] == ' '){
row--;
}
else {
if (maze[row][line - 1] == ' '){
line--;
face = 'w';
}
else {
row++;
face = 's';
}
}
}
copy[row][line] = 'o';
break; //end north
case 'w': //west
if (maze[row - 1][line] == ' '){
row--;
face = 'n';
}
else{
if (maze[row][line - 1] == ' '){
line--;
}
else {
if (maze[row + 1][line] == ' '){
row++;
face = 's';
}
else {
line++;
face = 'e';
}
}
}
copy[row][line] = 'o';
break;//end west
case 'e': //east
if (maze[row + 1][line] == ' '){
row++;
face = 's';
}
else{
if (maze[row][line + 1] == ' '){
line++;
}
else {
if (maze[row - 1][line] == ' '){
line++;
face = 'n';
}
else {
line--;
face = 'w';
}
}
}
copy[row][line] = 'o';
break;//end east
default:printf("无出口");
}
}//end while
for (i = 0; i < N; i++){
for (j = 0; j < N; j++){
printf("%c ", copy[i][j]);
}
printf("\n");
}
return 0;
}
阅读全文
0 0
- c语言 走迷宫问题
- C语言走迷宫源代码
- C语言算法之老鼠走迷宫
- C语言小游戏-走迷宫
- 用C语言实现走迷宫
- 迷宫问题C语言实现
- 迷宫问题C语言解法
- 迷宫问题--C语言实现
- c语言之迷宫问题
- 走迷宫的问题
- 老鼠走迷宫问题
- 机器人走迷宫问题
- 老鼠走迷宫问题
- 走迷宫问题
- 走迷宫问题
- dfs-----走迷宫问题
- 递归算法求老鼠走迷宫(C语言)
- 从算法学起C语言--老鼠走迷宫
- BZOJ 4397 Breed Counting
- 指针指向类的静态数据成员
- Maven命令的使用
- QT
- PYTHON基础笔记(3)
- c语言 走迷宫问题
- [BZOJ3924][ZJOI2015]幻想乡战略游戏-动态树分治
- 项目实践——一段时间的项目总结
- webpack配置相关知识详解
- 算法 一致性哈希算法
- excel数据分析--vlookup函数的使用
- 文章标题
- C语言链表-创建链表并且从键盘输入赋值
- css3之2d转换(transform方法)