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

Đề tài: bài toán xếp 8 hậu bằng thuật toán leo đồi. Giúp em với?

  1. #1
    Ngày gia nhập
    09 2008
    Bài viết
    13

    Mặc định bài toán xếp 8 hậu bằng thuật toán leo đồi. Giúp em với?

    tình hình là em đang bí bài xếp hậu bằng thuật toán leo đồi, đọc mãi thuật toán leo đồi rồi mà chưa biết làm thế nào. Bác nào có cách làm thì share em thuật giải.Có Code thì càng tốt.

  2. #2
    Ngày gia nhập
    03 2009
    Bài viết
    523

    hix, sao box giải thuật ít người trả lời quá. May mà em Google dc mấy bài ko là zero òi...
    Từ cái giải thuật viết thành cái code là cả 1 problem... Google dc thì pass, Google ko dc thì out...

  3. #3
    Ngày gia nhập
    04 2010
    Bài viết
    13

    code đây bạn...tham khảo nha
    C Code:
    1. #include <stdio.h>
    2. #include <stdlib.h>
    3. #include <conio.h>
    4. #define KICHTHUOC 8                    // Kich thuoc cua ban co
    5. #define SODUONGCHEO (2*KICHTHUOC-1)    // So duong cheo cua ban co
    6. #define SOGIA (KICHTHUOC-1)            // so gia
    7. #define TRUE 1
    8. #define FALSE 0
    9.  
    10. // prototypes
    11. void hoanghau(int);
    12. void inloigiai(int loigiai[]);
    13.  
    14. int cottrong[KICHTHUOC];          // mang cac cot co the dat hoang hau
    15. int cheoxuoitrong[SODUONGCHEO];   // mang cac duong cheo xuoi co the dat hhau
    16. int cheonguoctrong[SODUONGCHEO];  // mang cac duong cheo nguoc co the dat hhau
    17.  
    18. int loigiai[KICHTHUOC];        /* mang loigiai cho biet cot dat cac hoang
    19.                                              hau tren ban co. Vi du cac phan tu cua mang
    20.                                              la: 7   3   0   2   5   1   6   4
    21.                                              cho biet hoanghau0 dat o cot 7, hoanghau1
    22.                                              dat o cot 3, ..., hoanghau7 o cot 4      */
    23.  
    24. int SoLoiGiai = 0;
    25.  
    26. void main(void)
    27. {
    28.    int i;
    29.  
    30.    /* Khoi dong tat ca cac cot duong cheo xuoi, duong cheo nguoc deu co the
    31.       dat hoang hau */
    32.    for(i = 0; i < KICHTHUOC; i++)
    33.       cottrong[i] = TRUE;
    34.    for(i = 0; i < SODUONGCHEO; i++)
    35.    {
    36.       cheoxuoitrong[i] = TRUE;
    37.       cheonguoctrong[i] = TRUE;
    38.    }
    39.  
    40.    // Goi ham de qui de bat dau dat HoangHau0 (hoang hau o hang 0)
    41.    hoanghau(0);
    42. }
    43.  
    44. // Ham hoanghau giup dat hoang hau i (i tu 0 den KICHTHUOC-1) tren hang i
    45. void hoanghau(int i)
    46. {
    47.    int j;
    48.    for(j = 0; j < KICHTHUOC; j++)
    49.       if(cottrong[j] && cheoxuoitrong[i-j+SOGIA] && cheonguoctrong[i+j])
    50.       {
    51.           // Dat hoang hau vao o (i, j) tren ban co
    52.           loigiai[i] = j;
    53.           cottrong[j] = FALSE;
    54.           cheoxuoitrong[i-j+SOGIA] = FALSE;
    55.           cheonguoctrong[i+j] = FALSE;
    56.  
    57.           if(i == KICHTHUOC-1)   // Dkien dung, dat duoc con hoang hau cuoi
    58.              inloigiai(loigiai);
    59.           else                   // Buoc de qui, goi dat hoang hau i+1
    60.              hoanghau(i + 1);
    61.  
    62.           // lan nguoc
    63.           cottrong[j] = TRUE;
    64.             cheoxuoitrong[i-j+SOGIA] = TRUE;
    65.           cheonguoctrong[i+j] = TRUE;
    66.       }
    67. }
    68.  
    69. void inloigiai(int *loigiai)
    70. {
    71.     int i;
    72.     char c;
    73.     randomize();
    74.     //textmode(C80);
    75.     //textbackground(0);
    76.     clrscr();
    77.     textcolor(1 + random(15));
    78.     cprintf("\n                           CHUONG TRINH 8 HOANG HAU\n   ");
    79.     cprintf("\n Loi giai %d", ++SoLoiGiai);
    80.    printf("\n\n                      0     1    2    3    4    5    6    7");
    81.    printf("\n                    ÚÄÄÄÄÂÄÄÄÄÂÄÄÄÄÂÄÄÄÄÂÄÄÄÄÂÄÄÄÄÂÄÄÄÄÂÄÄÄÄ¿");
    82.    printf("\n                   0³    ³²²²²³    ³²²²²³    ³²²²²³    ³²²²²³");
    83.     printf("\n                    ÃÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄÄ´");
    84.     printf("\n                   1³²²²²³    ³²²²²³    ³²²²²³    ³²²²²³    ³");
    85.    printf("\n                    ÃÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄÄ´");
    86.    printf("\n                   2³    ³²²²²³    ³²²²²³    ³²²²²³    ³²²²²³");
    87.    printf("\n                    ÃÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄÄ´");
    88.    printf("\n                   3³²²²²³    ³²²²²³    ³²²²²³    ³²²²²³    ³");
    89.    printf("\n                    ÃÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄÄ´");
    90.    printf("\n                   4³    ³²²²²³    ³²²²²³    ³²²²²³    ³²²²²³");
    91.    printf("\n                    ÃÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄÄ´");
    92.    printf("\n                   5³²²²²³    ³²²²²³    ³²²²²³    ³²²²²³    ³");
    93.    printf("\n                    ÃÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄÄ´");
    94.    printf("\n                   6³    ³²²²²³    ³²²²²³    ³²²²²³    ³²²²²³");
    95.    printf("\n                    ÃÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄÄ´");
    96.    printf("\n                   7³²²²²³    ³²²²²³    ³²²²²³    ³²²²²³    ³");
    97.    printf("\n                    ÀÄÄÄÄÁÄÄÄÄÁÄÄÄÄÁÄÄÄÄÁÄÄÄÄÁÄÄÄÄÁÄÄÄÄÁÄÄÄÄÙ");
    98.    for(i = 0; i < KICHTHUOC; i++)
    99.    {
    100.       gotoxy(24+5*loigiai[i], 8+2*i);
    101.       //    textcolor(1 + random(15));
    102.       cprintf("Q");
    103.    }
    104.    gotoxy(13, 25);
    105.    printf("Nhan phim <ESC> de thoat, nhan phim bat ky de tiep tuc ...");
    106.    c = getche();
    107.    if(c == 27)
    108.       exit(1);
    109. }

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

    Trích dẫn Nguyên bản được gửi bởi chuong01 Xem bài viết
    hix, sao box giải thuật ít người trả lời quá. May mà em Google dc mấy bài ko là zero òi...
    Từ cái giải thuật viết thành cái code là cả 1 problem... Google dc thì pass, Google ko dc thì out...
    a còn giữ source ko ạ, cho e xin với

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

  1. Giải thuật shaker sort. Giúp mình giải thuật với?
    Gửi bởi nguyenhai trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 6
    Bài viết cuối: 29-01-2015, 10:53 PM
  2. Bài tập C Cần giải giúp 3 câu trong đề thi kĩ thuật lập trình C và Cấu trúc dữ liệu và giải thuật
    Gửi bởi nguyenthi0602 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 2
    Bài viết cuối: 24-09-2012, 08:42 PM
  3. thuật toán cộng hai số lớn. các bạn giúp mình
    Gửi bởi ngonchanloi89 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 7
    Bài viết cuối: 02-04-2011, 10:35 AM
  4. lưu đồ giải thuật bài mã đi tuần thuật toán quay lui vét cạn. Giúp mình với?
    Gửi bởi katemat000 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 1
    Bài viết cuối: 05-01-2010, 10:53 PM
  5. thuật toán in ra tất cả các tổng có thể. Giúp mình với?
    Gửi bởi xiu_coi trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 2
    Bài viết cuối: 10-10-2009, 08:59 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