All pastes #585598 Raw Edit

Mine

public cpp v1 · immutable
·published 2007-06-23 10:53 UTC
rendered paste body
#include <iostream>"#include <conio.h>#include <iomanip>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<n;i++)        for(int j=0;j<n;j++)        {                if( 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<n-2;i++)    {        cout<<"|";        for(int j=2;j<n-2;j++)        {            if(chessBoard[i][j] == 0)                cout<<"   "<<"|";            else                cout<<chessBoard[i][j]<<"|";        }        cout<<endl;        cout<<"|";        for(int j=2;j<n-2;j++)        {                            cout<<"---"<<"|";        }        cout<<endl;            }    getch(); }/***********************************    Thông báo k?t qu? ra ngoài .***********************************/void Try(int step,int i,int j){    int hang,cot;        for(int v=0;v<8;v++)        {            // Cac Buoc Nhay :            hang=i+row[v];            cot=j+col[v];            if(chessBoard[hang][cot] == 0 )            {                if(step +1 == 64)                {                    chessBoard[hang][cot]= step+1;                    Show();                    chessBoard[hang][cot]= 0;                }                                else                {                    chessBoard[hang][cot]= step+1;                    Try(step+1,hang,cot);                    chessBoard[hang][cot]= 0;                    }                        }                                            }}int main(){    initialize();    chessBoard[2][2]=1;    Try(1,2,2);    cout<<" Ket Thuc"<<endl;        system ("pause");    return 0;}