#include
#define max_row 8
#define max_col 8
int flag = 0;
typedef struct point
point;
int maze[max_row][max_col] = ;
point footprints[max_row][max_col] = ,,,,,,,},
,,,,,,,},
,,,,,,,},
,,,,,,,},
,,,,,,,},
,,,,,,,},
,,,,,,,},
,,,,,,,},
};void print_maze(void)
printf("\n");
}printf("\n***************************************** \n");
}void print_foots(void)
;while(footprints[p.row][p.col].row != -1)/*footprints[p.row][p.col]記錄p點的上乙個點的座標*/
\n", p.row, p.col);/*倒序列印走出 迷宮的每乙個點座標*/
p = footprints[p.row][p.col];
printf(" \n", p.row, p.col);/*倒序列印走出 迷宮的每乙個點座標*/
}printf("seccess out ! \n");
}void print(void)
,", footprints[i][j].row, footprints[i][j].col);
}printf("\n");
}printf("\n");
}void visitpoint(point p)
if((p.row+1 < max_row) && (maze[p.row+1][p.col] == 0))
;maze[p.row+1][p.col] = 2;
footprints[p.row+1][p.col] = p;
visitpoint(temppoint);
}if((p.col+1 < max_col) && (maze[p.row][p.col+1] == 0))
;maze[p.row][p.col+1] = 2;
footprints[p.row][p.col+1] = p;
visitpoint(temppoint);
}if((p.row-1 >= 0) && (maze[p.row-1][p.col] == 0))
;maze[p.row-1][p.col] = 2;
footprints[p.row-1][p.col] = p;
visitpoint(temppoint);
}if((p.col-1 >= 0) && (maze[p.row][p.col-1] == 0))
;maze[p.row][p.col-1] = 2;
footprints[p.row][p.col-1] = p;
visitpoint(temppoint);
}return;
}int main(void)
;/*出發點*/
maze[p.row][p.col] = 2;/*訪問過的點標記為2*/
visitpoint(p);
if(flag)
else
return 0;
}
資料結構 遞迴思想及遞迴實現迷宮問題
遞迴 就是自己呼叫自己,然後一層層返回 乙個簡單的例子 列印問題 public static void main string args 列印問題 我們可以分析這個程式的執行過程 程式的方法在虛擬機器的棧空間執行 這就是遞迴的過程 有這樣乙個迷宮,從起點到終點,紅色是牆,黃色的是路,可以走,一次走一...
用遞迴寫迷宮
題目要求 輸入三個數,n m n和m表示迷宮的n行m列 當輸入m和n為0時結束輸入。起點用 s 表示,終點用 d 表示,牆壁用 x,表示可走路徑。例如 輸出 如果能找到路徑到出口則輸出路徑,否則輸出 no 解題思路 使用深度優先搜尋 dfs include using namespace std i...
遞迴迷宮問題
這裡我們有乙個地圖 用二維陣列表示 小球位於地圖的起始點 也就是map 1 1 這個位置 然後小球通過進行迴圈判斷小球當前位置的上下左右是否能走,如果能走則在走之前把之前的位置標記為2,代表有路可走,如果上下左右都沒有路則把當前位置標記為3,代表無路可走,直到找到地圖的目的地,也就是map 6 5 ...