Từ 1 tới 3 trên tổng số 3 kết quả

Đề tài: Quay lui vét cạn giải bài toán 8 quân hậu

  1. #1
    Ngày gia nhập
    12 2011
    Bài viết
    15

    Red face Quay lui vét cạn giải bài toán 8 quân hậu

    Nào chúng ta cùng quay lui vét cạn để giải bài toán 8 quân hậu.
    Về lý thuyết cách đặt quân hậu trên bàn cờ vua: đặt 8 quân hậu trên bàn cờ vua sao không có quân hậu nào cùng hàng cùng cột hay cùng đường chéo với nhau.
    Về tổ chức dữ liệu bàn cờ: bàn cờ vua có 8 dòng, 8 cột, 15 đường chéo theo hình dấu huyền, 15 đường chéo theo hình dấu sắc. Vậy mình có 4 mảng, dòng, cột, đường chéo huyền, đường chéo sắc mổi mảng tượng trưng cho 1 đường.
    Đường đánh dấu 1 là có thể đặt quân hậu, đường đánh dấu 0 là không thể đặt quân hậu.

    C Code:
    1. #include<conio.h>
    2. #include<stdio.h>
    3. int dong[8], cot[8], cheodausac[15], cheodauhuyen[15];
    4. int dem=0;
    5. char banco[8][8];
    6. void khoitaobanco(){
    7.     for(int i=0;i<8;i++)
    8.         for(int j=0;j<8;j++)
    9.             banco[i][j]='+';
    10. }
    11.  
    12. void khoitao(){
    13.     int i;
    14.     for(i=0;i<8;i++){
    15.         cot[i]=1;
    16.         dong[i]=-1;
    17.     }
    18.     for(i=0;i<15;i++){
    19.         cheodausac[i]=1;
    20.         cheodauhuyen[i]=1;
    21.     }
    22. }
    23. void print();
    24. void thu(int i){
    25.     int j;
    26.     khoitaobanco();
    27.     for(j=0;j<8;j++){
    28.         if(cot[j]==1&&cheodausac[i+j]==1&&cheodauhuyen[i-j+7]==1){
    29.             dong[i]=j;
    30.             cot[j]=0;
    31.             cheodausac[i+j]=0;
    32.             cheodauhuyen[i-j+7]=0;
    33.             if(i<7)
    34.                 thu(i+1);
    35.             //hien thi ket qua
    36.             else{
    37.                 dem++;
    38.                 for(int i=0;i<8;i++){
    39.                     banco[i][dong[i]]='Q';
    40.     }
    41.             }
    42.             if(dem==1) break;
    43.             //phuc hoi lai
    44.             cot[j]=1;
    45.             cheodausac[i+j]=1;
    46.             cheodauhuyen[i-j+7]=1;
    47.         }
    48.     }
    49. }
    50. void timquanhau(){
    51.     int i;
    52.     khoitao();
    53.     thu(0);
    54. }
    55.  
    56.  
    57. void hienthisaumoinuocdi(){
    58.    
    59.    
    60.     printf("\t\tBAN CO\n\n");
    61.     for(int i=0;i<8;i++){
    62.         for(int j=0;j<8;j++){
    63.             printf("%3c",banco[i][j]);
    64.         }
    65.         printf("\n\n");
    66.     }
    67.     printf("\t\tHIEN THI SAU MOI NUOC DI\n");
    68.     for(int nuocdi=0;nuocdi<9;nuocdi++){
    69.         printf("Nuoc %d\n",nuocdi);
    70.         for(int i=0;i<8;i++){
    71.             for(int j=0;j<8;j++){
    72.                 if(i>=nuocdi&&banco[i][j]=='Q'){
    73.                     char ch='+';
    74.                     printf("%3c",ch);
    75.                 }
    76.                 else
    77.                     printf("%3c",banco[i][j]);
    78.             }
    79.             printf("\n\n");
    80.         }
    81.        
    82.     }
    83. }
    84.  
    85.  
    86. int main()
    87. {
    88.     timquanhau();
    89.     hienthisaumoinuocdi();
    90.     getch();
    91. }
    Mình chú thích củng tương đối kỉ nên phần này không có giải thích gì thêm. Mong mọi người quánh giá.

  2. #2
    Ngày gia nhập
    04 2012
    Bài viết
    2

    sao nó có mỗi trường hợp thôi à?
    có pro nào chỉ dáo em làm với em phải nộp đồ án bài nay :((
    Anh nào có long pm yh em phát nha:longsonhai222
    Thanks các pro

  3. #3
    Ngày gia nhập
    01 2011
    Nơi ở
    -Mountain-
    Bài viết
    768

    Trích dẫn Nguyên bản được gửi bởi duclinhht Xem bài viết
    sao nó có mỗi trường hợp thôi à?
    có pro nào chỉ dáo em làm với em phải nộp đồ án bài nay :((
    Anh nào có long pm yh em phát nha:longsonhai222
    Thanks các pro
    Các trường hợp khác cũng tương tự thôi bạn ak. Bài toán có dạng đặt n con hậu lên bàn cờ nxn
    Để hiểu rõ hơn bạn có thể tìm kiếm trên mạng. Toán rời rạc hoặc thuật toán quay lui, vét cạn hầu như đều nói tới
    Hướng dẫn C++: https://www.youtube.com/watch?v=BwLodoQdoY4&list=PL1c9Uxlo-mplJDRGdONNupgo5OCBTyGGn

Các đề tài tương tự

  1. Máy Quay HD Sony, máy quay sony Handycam, máy quay kỹ thuật số, máy quay phim mới tinh Mo
    Gửi bởi dientuthaithang trong diễn đàn Giới thiệu website, sản phẩm của bạn
    Trả lời: 472
    Bài viết cuối: 03-08-2012, 05:16 PM
  2. Đồ chơi công nghệ thế kỷ 21:Bút quay,đồng hồ quay,móc quay,máy nghe lén qua sim
    Gửi bởi bigphonevn trong diễn đàn Giới thiệu website, sản phẩm của bạn
    Trả lời: 0
    Bài viết cuối: 06-08-2011, 10:47 PM
  3. Thiết bị thám tử: Bút quay,đồng hồ quay,móc quay,máy nghe lén qua sim
    Gửi bởi bigphonevn trong diễn đàn Giới thiệu website, sản phẩm của bạn
    Trả lời: 0
    Bài viết cuối: 17-07-2011, 08:23 AM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn