#include
#define MAX_ROW 5
#define MAX_COL 5
cấu trúc
điểm {
số nguyên
hàng, cột; } ngăn xếp[512];
số nguyên
đỉnh = 0;
vô hiệu
xô(
cấu trúc
điểm p)
{
stack[top++] = p;
}
cấu trúc
điểm pop(
vô hiệu
)
{
trở lại
ngăn xếp[--trên cùng];
}
số nguyên
là_trống(
vô hiệu
)
{
trở lại
đầu trang == 0;
}
số nguyên
mê cung[MAX_ROW][MAX_COL] = {
0, 1, 0, 0, 0,
0, 1, 0, 1, 0,
0, 0, 0, 0, 0,
0, 1, 1, 1, 0,
0, 0, 0, 1, 0,
};
vô hiệu
in_mê cung(
vô hiệu
)
{
số nguyên
tôi, j;
vì
(i = 0; i < MAX_ROW; i++) {
vì
(j = 0; j < MAX_COL; j++)
inf
(
"%d"
, mê cung[i][j]);
putchar
(
'\N'
);
}
inf
(
"*********\N"
);
}
cấu trúc
điểm tiền nhiệm[MAX_ROW][MAX_COL] = {
{{-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}},
{{-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}},
{{-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}},
{{-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}},
{{-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}},
};
vô hiệu
thăm nom(
số nguyên
hàng ngang,
số nguyên
cột,
cấu trúc
điểm trước)
{
cấu trúc
điểm visit_point = { hàng, cột };
mê cung[hàng][cột] = 2;
tiền nhiệm[hàng][cột] = trước;
đẩy(điểm_ghé_ghé);
}
số nguyên
chủ yếu(
vô hiệu
)
{
cấu trúc
điểm p = { 0, 0 };
mê cung[p.row][p.col] = 2;
đẩy(p);
trong khi
(!is_empty()) {
p = pop();
nếu như
(p.row == MAX_ROW - 1
&& p.col == MAX_COL - 1)
phá vỡ
;
nếu như
(p.col+1 < MAX_COL
&& mê cung[p.row][p.col+1] == 0)
thăm(p.row, p.col+1, p);
nếu như
(p.row+1 < MAX_ROW
&& mê cung[p.row+1][p.col] == 0)
thăm(p.row+1, p.col, p);
nếu như
(p.col-1 >= 0
&& mê cung[p.row][p.col-1] == 0)
thăm(p.row, p.col-1, p);
nếu như
(p.row-1 >= 0
&& mê cung[p.row-1][p.col] == 0)
thăm(p.row-1, p.col, p);
in_mê cung();
}
nếu như
(p.row == MAX_ROW - 1 && p.col == MAX_COL - 1)
{
inf
(
"(%d, %d)\n"
, hàng trước, hàng sau);
trong khi
(tiền thân[p.row][p.col].row != -1) {
p = tiền nhiệm[p.row][p.col];
inf
(
"(%d, %d)\n"
, hàng trước,
p.col);
}
}
khác
inf
(
"Không có đường đi!\n"
);
trở lại
0;
}
Tôi là một lập trình viên xuất sắc, rất giỏi!