#include " #include #include using namespace std; /* Chuong Trình : Mã Ði Tu?n Gi?i Thu?t : Ð? Qui + Quay Lui Mô T? : -------------------- ----------------------- T?i m?t v? trí trên bàn c?: C?t ------------------------- | | x1| | x2| | | ------------------------- | x8| | | | x3| | ------------------------- Hàng | | | M | | | | ------------------------- | x7| | | | x4| | ------------------------- | | x6| | x5| | | ------------------------- Mã ( M( Hàng, Cot ) ) có the di duoc 8 hu?ng khác nhau . Các vi trí có the duoc dánh dáu là x(1->8). Trong dó t?a d? các v? trí ph? thu?c Hàng C?t c?a M . Bây gi? ta s? s? d?ng Quay Lui d? duy?t l?n lu?t các hu?ng có th? di c?a con mã ( M ) . Ð? d?t mã M t?i ví trí nào dó thì t?i v? trí dó ph?i thu?c trong bàn c? ,và T?i dó con mã chua t?ng di qua . Ta s? s? d?ng các bi?n nhu sau : + ChessBoard[n][n] : Ð? luu các giá tr? mã dã di qua trên bàn c? + Number : Ð? xem th? M dã di qua du?c bao nhiêu ô trên bàn c? (< n*n) + Row[n] : Ð? luu d?a ch? các hàng có th? di d?n t? M. + Col[n] : Tuong t? nhung là giá tr? c?t . Ð? gi?m thi?u dk , ta s? s? d?ng ki thu?t c?m canh nhu v?y : +chessBoard[n+4][n+4] */ int n; int chessBoard[12][12]; int number; int row[8]={-2,-1,1,2,2,1,-1,-2}; int col[8]={1,2,2,1,-1,-2,-2,-1}; /******************************** Kh?i d?ng cho bàn c? . Các ô chua di qua , s? ô di qua = 0, và giá tr? chi?u dài,r?ng c?a b.c? **********************************/ void initialize() { n=12; // Kh?i t?o các giá tr? ban d?u theo kt c?m canh for(int i=0;i=2 && i< 10 && j>=2 && j<10 ) chessBoard[i][j]=0; else chessBoard[i][j]=-1; } } /*********************************** Hàm Show dùng d? in các bu?c trong quá trình d? qui. ***********************************/ void Show() { system("cls"); for(int i=2;i