非遞迴實現迷宮求解

2021-10-10 16:08:44 字數 1074 閱讀 6667

/**

* 迷宮求解問題

* 用乙個m×n的矩陣表示迷宮,0和1分別表示迷宮中的通路和障礙。

* 設計乙個程式,對給定的迷宮,求出找到的第一條從入口到出口的通路,或得到沒有通路的結論。

* 我們指定:

* 迷宮的入口為矩陣的左上角(1,1),迷宮的出口為右下角(m,n);

* 路徑的探索順序依次為「東南西北」(即:右下左上)。

* 輸入:

* 第一行輸入兩個整數,空格間隔,分別表示矩陣的行數m和列數n;

* 接下來的連續m行,輸入迷宮矩陣的資訊。

* 輸出:

* 求得的通路以三元組(i,j,d)的形式輸出。

*/#include #include #define n 16

typedef struct box box;

typedef struct stack stack;

int m, n;

int map[n][n] = ,,,

,,,,

,,,,

,,,,

};stack st;

int path(int xi, int yi, int xe, int ye); /* 求解從(xi,yi)到(xe,ye)的路徑 */

int main(void)

path(1, 1, m, n);

return 0;

}int path(int xi, int yi, int xe, int ye)

printf("\n");

return 1;

}find = 0;

while (di < 3 && find == 0)

if (map[i][j] == 0)

find = 1;

}if (find == 1)

if(di == 1)

if(di == 2)

if(di == 3)

/* 避免重複走到該方塊 */

}else

}return 0;

}

遞迴實現迷宮求解

首先在當前路徑前 有乙個maze.txt,儲存的內容為 0 0 1 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 ...

迷宮求解 遞迴

首先來看一下迷宮簡易圖 我們用 0 來表示該位置是牆,用 1 來表示該位置是路.所以,我們在處理迷宮問題的時候可以將其看成乙個二維陣列即可,而對應的每一條路我們可以用座標的形式將其表示,所以還需要有乙個結構體來描述對應的點的 1.相關資料結構 typedef struct maze maze typ...

非遞迴迷宮問題實現

模組化,重整程式 class lstack def init self,top 1,full 20 self.top top self.stack self.full full def is full self return self.full self.top 1 def is empty sel...