sách gpt4 ăn đã đi

Ngôn ngữ C sử dụng thuật toán tìm kiếm theo chiều sâu để giải bài toán mê cung (ngăn xếp)

In lại Tác giả: qq735679552 Thời gian cập nhật: 28-09-2022 22:32:09 38 4
mua khóa gpt4 giày nike

CFSDN nhấn mạnh vào giá trị tạo ra nguồn mở và chúng tôi cam kết xây dựng nền tảng chia sẻ tài nguyên để mọi nhân viên CNTT có thể tìm thấy thế giới tuyệt vời của bạn tại đây.

Bài viết trên blog CFSDN này sử dụng thuật toán tìm kiếm theo chiều sâu để giải bài toán mê cung (ngăn xếp) trong ngôn ngữ C được tác giả sưu tầm và biên soạn. Nếu bạn quan tâm đến bài viết này thì nhớ like nhé.

Ví dụ trong bài viết này mô tả việc sử dụng thuật toán tìm kiếm theo chiều sâu trong ngôn ngữ C để giải bài toán mê cung. Share cho mọi người tham khảo nhé, chi tiết như sau:

Tìm kiếm theo chiều sâu đầu tiên

Ngôn ngữ C sử dụng thuật toán tìm kiếm theo chiều sâu để giải bài toán mê cung (ngăn xếp)

mã giả.

(Mã giả) như sau:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Đánh dấu điểm bắt đầu là đã vượt qua và đẩy nó vào ngăn xếp;
trong khi (栈平空) {
Lấy một điểm p từ đầu ngăn xếp;
if (p là điểm cuối)
phá vỡ;
Nếu không, hãy khám phá các điểm liền kề dọc theo bốn hướng phải, dưới, trái và trên.
if (điểm liền kề với p có một đường đi và nó chưa được vượt qua)
Đánh dấu điểm liền kề là đã được thông qua và đẩy nó vào ngăn xếp, tiền thân của nó là điểm p;
}
if (điểm p là điểm cuối) {
In tọa độ điểm p;
while (điểm p có điểm trước) {
Điểm p = điểm liền trước điểm p;
In tọa độ điểm p;
}
} khác
Không có con đường nào đi đến đích;

Mã ngôn ngữ C:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
#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;
   (i = 0; i < MAX_ROW; i++) {
   (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 /* mục tiêu */     && p.col == MAX_COL - 1)
     phá vỡ ;
     nếu như (p.col+1 < MAX_COL /* Phải */  && mê cung[p.row][p.col+1] == 0)
       thăm(p.row, p.col+1, p);
     nếu như (p.row+1 < MAX_ROW /* xuống */ && mê cung[p.row+1][p.col] == 0)
       thăm(p.row+1, p.col, p);
     nếu như (p.col-1 >= 0 /* bên trái */ && mê cung[p.row][p.col-1] == 0)
       thăm(p.row, p.col-1, p);
     nếu như (p.row-1 >= 0 /* hướng lên */  && 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 hy vọng bài viết này sẽ hữu ích cho mọi người trong lập trình ngôn ngữ C.

Liên kết gốc: http://blog.csdn.net/e421083458/article/details/39185171.

Cuối cùng, bài viết này về việc sử dụng thuật toán tìm kiếm theo chiều sâu trong ngôn ngữ C để giải bài toán mê cung (ngăn xếp) kết thúc tại đây. Nếu bạn muốn biết thêm về cách sử dụng thuật toán tìm kiếm theo chiều sâu trong ngôn ngữ C để giải bài toán mê cung. (stack), vui lòng tìm kiếm các bài viết của CFSDN hoặc tiếp tục duyệt các bài viết liên quan. Tôi hy vọng bạn sẽ ủng hộ blog của tôi trong tương lai! .

38 4 0
qq735679552
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress