C#: Code Xếp N Quân Hậu (vét Cạn) Cho đầy đủ Lời Giải - VN SEEDER
Có thể bạn quan tâm
VN SEEDER
Chắc chắn là có đủ....
Menu- Tin học - Lập trình
- Lập trình căn bản
- Lập trình đồ họa
- Cấu trúc dữ liệu & giải thuật
- C# và SQL Server
- Thủ thuật máy tính
- Kiến thức
- Có thể bạn chưa biết
- Làm thế nào
- Nuôi dạy con
- Sức khỏe
- Đọc
- Hạt giống tâm hồn
- Truyện cổ tích
- Truyện cười
- Truyện ngụ ngôn
- Tony buổi sáng
- Phật học
- Ebook
- English Ebook
- Vietnamese Ebook
Trong giải thuật này, mỗi lời giải được ký hiệu bằng một mảng solution[1..n], trong đó solution[i]= j là cột mà quân hậu ở hàng thứ iđứng. Theo tính chất số học của các ô trên bàn cờ n x n, các ô trên các đường chéo cộng chứa ô (i, j) đều có tổng chỉ số hàng với chỉ số cột bằng i+j. Tổng này nhận các giá trị từ 2 đến 2n nên ta đánh số các đường chéo này từ 1 đến 2n-1. Như vậy các ô trên đường chéo cộng thứ nhất có tổng chỉ số dòng và cột là 2, các ô trên đường chéo thứ k có tổng ấy là k+1. Ta dùng một mảng Boolean Ok_plus[1..2n-1] để kí hiệu trạng thái đã có quân hậu nào trên đường chéo cộng thứ k chưa, nghĩa là Ok_plus[k]=True nếu đã có một quân hậu đứng chiếm giữ đường chéo cộng thứ k. Tương tự, các ô trên một đường chéo trừ có hiệu như nhau. Hiệu này nhận giá trị từ 1-n đến n- 1. Đánh số từ 1 đến 2n-1 từ đường chéo có hiệu chỉ số dòng trừ chỉ số cột là 1-n đến đường chéo có hiệu ấy bằng n-1. Khi đó đường chéo trừ thứ k có hiệu chỉ số dòng trừ chỉ số cột là k-n. Ta cũng dùng mảng ok_minus[1..2n-1] để chỉ trạng thái của các đường chéo này.Giải thuật này cố gắng đặt quân hậu ở dòng thứ i vào cột nào đó, bắt đầu từ dòng thứ nhất (luôn có thể đặt được). Nếu ở dòng thứ i ta đặt quân hậu vào cột thứ j, thì nó khống chế tất cả các ô trong cột thứ j, đường chéo cộng thứ i+j-1, đường chéo trừ thứ i-j+n. Nếu có thể đặt được quân hậu ở dòng i và i = n ta có một lời giải. Nếu đặt được và i < n ta tiếp tục cố gắng đặt quân hậu tiếp theo vào dòng thứ i+1. Nếu không đặt được, ta quay lại nhấc quân hậu ở dòng thứ i-1 và tìm phương án tiếp theo của dòng thứ i-1.
Mã giả
Procedure Try_row(i)For j=1 To n doIf not ok_row(i) And not ok_col(j) And not ok_plus(i+j-1) And not ok_minus(i-j+n) then{solution(i)=j;ok_col(j)=True;ok_plus(i+j-1)=True;ok_minus(i-j+n)=True;If i<n thentry_row(i+1)ELSE print_solution();ok_row(i)=False;ok_col(j)=False;ok_plus(i+j-1)=False;ok_minus(i-j+n)=False;}Thủ tục tìm tất cả các lời giải của bài toán n hậu chỉ bao gồm một lời gọi Try_row(1):Procedure n_queen(n);Call Try_row(1);Video Code C#:Bài liên quan
Bài liên quan
>Thể loại
Cổ tích Có thể bạn chưa biết Nuôi - Dạy con TonyBuổi Sáng-TnBS Sức khỏe Máy tính Lập trình căn bản Làm thế nào Ngẫm Cấu trúc dữ liệu và giải thuật Hạt giống tâm hồn C# và SQL Server Phật học Truyện ngụ ngôn Giáo dụcEbook Tiếng Anh
CSharp Facebook SEO WindowsBài xem nhiều
- Lập trình căn bản C: Tìm ước chung lớn nhất, bội chung nhỏ nhất của 2 số a, b
- Lập trình căn bản C: Rút gọn phân số
- Lập trình căn bản C: Xét trúng tuyển thi đại học
- Những lần xê dịch
- Lập trình căn bản C: In ra n số nguyên tố đầu tiên
- Chuyện tiền chuyện bạc (phần 2)
- Lập trình căn bản C: in tam giác số đối đỉnh
- Lập trình căn bản C: tìm số m lớn nhất sao cho tổng từ một đến m nhỏ hơn bằng n
- Làm Menu lựa chọn bằng mũi tên di chuyển lên xuống C/C++
- Đảo ngược số nguyên dương bằng cách sử dụng đệ quy (có trả về kết quả)
Từ khóa » Thuật Toán Vét Cạn C
-
Tìm Kiếm Vét Cạn (Complete Search) - Vallicon
-
Vét Cạn | Lập Trình C/C++ | Trang 2
-
CHIẾN LƯỢC VÉT CẠN VÀ THUẬT TOÁN ĐỆ QUY - Quê Hương
-
[PDF] Phân Tích Thiết Kế Giải Thuật - Cit..vn
-
Thắc Mắc Về Thuật Toán Vét Cạn - Programming - Dạy Nhau Học
-
Những Cách Tiếp Cận Bài Toán: Phần 2 - VNOI
-
Chuyen De Vet Can - DocShare.tips
-
Thiết Kế Thuật Toán-vét Cạn Và Tham Lam - PDFCOFFEE.COM
-
Đề Tài: Thiết Kế Thuật Toán Vét Cạn Và Tham Lam - Tài Liệu Text - 123doc
-
Bài Tập C++ Thuật Toán Vét Cạn Hay Dầu Loang Là Thế Nào? [Archive]
-
Chủ đề: Bài Toán Quay Lui Vét Cạn - Diễn Đàn Tin Học
-
Vấn đề Vét Cạn Và Giải Pháp
-
Thiết Kế Thuật Toán-vét Cạn Và Tham Lam | PDF - Scribd