Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Lập Trình C

Chương trình C: Chuột trong mê cung (Backtracking)

Maze 2D: 0 = đường đi, 1 = tường. Tìm đường từ (0,0) đến (n-1,n-1) dùng backtracking.

Chương trình C: Chuột trong mê cung (Backtracking)

Chương trình C: Chuột trong mê cung (Backtracking)

Ví dụ

Input maze[5][5]:
0 1 0 1 1
0 0 0 0 0
1 0 1 0 1
0 0 1 0 0
1 0 0 1 0
Output solution:
1 0 0 0 0
1 1 1 1 0
0 0 0 1 0
0 0 0 1 1
0 0 0 0 1

Thuật toán Backtracking

solvemaze(r,c):
    NẾU (r,c) LÀ ĐÍCH -> ĐÁNH DẤU, TRẢ VỀ TRUE
    NẾU Ô HỢP LỆ (trong bounds, không tường, chưa đi)
        ĐÁNH DẤU ĐÃ ĐI
        THỬ XUỐNG, PHẢI, LÊN, TRÁI (đệ quy)
        NẾU THÀNH CÔNG -> TRẢ VỀ TRUE
        BỎ ĐÁNH DẤU (BACKTRACK), TRẢ VỀ FALSE
    TRẢ VỀ FALSE

Chương trình C++ ví dụ

#include <iostream>
using namespace std;
#define SIZE 5

int maze[SIZE][SIZE] = {{0,1,0,1,1},{0,0,0,0,0},{1,0,1,0,1},{0,0,1,0,0},{1,0,0,1,0}};
int solution[SIZE][SIZE];

void printsolution() {
    for(int i=0;i=0&&c>=0&&r