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

Đề tài: Thuật toán Trò chơi bốc sỏi

  1. #1
    Ngày gia nhập
    08 2006
    Nơi ở
    Hải Phòng
    Bài viết
    218

    Mặc định Thuật toán Trò chơi bốc sỏi

    Trò chơi bốc sỏi


    Trên mặt đất có một đống sỏi có 101 viên. Hai em học sinh Hoàng và Huy chơi trò chơi như sau: Mỗi em đến lượt đi phải bốc ra từ đống sỏi trên tối thiểu là 1 viên và tối đa là 4 viên. Người thua là người phải bốc viên sỏi cuối cùng. Giả sử Hoàng là người được bốc trước, Huy bốc sau. Các bạn thử nghĩ xem ai là người thắng cuộc, Hoàng hay Huy? Và người thắng cuộc phải suy nghĩ gì và thực hiện các bước đi của mình ra sao?

  2. #2
    Ngày gia nhập
    09 2007
    Bài viết
    17

    Bài này khó quá, mình thử trả lời xem sao, người đi trước sẽ thắng (chắc là do mình đoán mò ^_^). Mình có chiến thuật thắng cho người đi sau:
    - Luôn luôn bốc để số kẹo còn lại chia hết cho 5
    - Nếu tay kia bốc k sỏi thì mình bốc 5 - k sỏi
    Nếu cứ theo thủ tục như vậy, thì qua lượt 20, sẽ chỉ còn 1 hòn sỏi và lượt chọn đó phải là ....tay kia
    Đã được chỉnh sửa lần cuối bởi NVL : 28-09-2007 lúc 07:05 PM.
    AI NÂNG MÌNH LÊN SẼ BỊ HẠ XUỐNG VÀ AI HẠ MÌNH XUỐNG SẼ ĐƯỢC NÂNG LÊN


  3. #3
    Ngày gia nhập
    09 2007
    Bài viết
    17

    Thật ra cách giải cũng gần như cách Nev nói . Nhưng mà người bốc sau sẽ luôn thắng theo " chiến thuật " đấy .

  4. #4
    Ngày gia nhập
    08 2006
    Nơi ở
    Hải Phòng
    Bài viết
    218

    Đáp án của anh NVL chính xác rồi

  5. #5
    Ngày gia nhập
    04 2008
    Bài viết
    24

    Mình viết thử giải thuật.

    C Code:
    1. #include <stdio.h>
    2. main()
    3. {
    4. int Hoang, Huy, n;
    5. n = 101;
    6. do
    7.    {
    8.     If (n > 0 )
    9.     {
    10.     do
    11.     {
    12.     printf(" \nHoang boc: ");
    13.     scantf("%d", &Hoang);
    14.     }
    15.     while (Hoang = 0) || (Hoang > 4) || (Hoang > n);
    16.     }
    17.     n = n - Hoang;
    18.     If (n = 0)
    19.        {
    20.          printf(" \nHoang thua !");break;
    21.        }
    22.     do
    23.     {
    24.     If (n > 0)
    25.     {
    26.     printf(" \nHuy boc: ");
    27.     scantf("%d", &Huy);
    28.     }
    29.     while (Huy = 0) || (Huy > 4) || (Huy > n);
    30.     }
    31.     n = n - Huy;
    32.     If (n = 0)
    33.        {
    34.          printf(" \nHuy thua !");break;
    35.        }
    36.    }
    37. while (n>0);
    38. gecth();
    39. }
    Mình viết nhanh, không tối ưu và chưa test, nếu sai các bạn góp ý.
    Đã được chỉnh sửa lần cuối bởi lelinhcntt : 12-04-2008 lúc 10:35 PM.

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

    Mặc định Thuật toán Trò chơi bốc sỏi

    Sao mình thấy nếu áp dụng chiến thuật trên thì người đi trước là người thua kg àh . Vì bóc đi bóc lại thì người đi trước bóc còn lại 5 viên (chia hết cho 5) thì người kia bóc 4 viên zậy là thua

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

  1. Kỹ thuật in - Vai trò của kỹ thuật in trong thiết kế, in ấn
    Gửi bởi thongthanhhungland 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: 18-11-2011, 01:04 PM
  2. Giải thuật A* trong trò chơi ô số?
    Gửi bởi truonghuulong trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 3
    Bài viết cuối: 21-03-2011, 11:47 PM
  3. Giải thuật Trò chơi viết số?
    Gửi bởi lepteo14 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 3
    Bài viết cuối: 23-11-2010, 04:59 PM
  4. Giải thuật Lập trình trò chơi Boogle. Xin hướng dẫn mình?
    Gửi bởi phikhanh90 trong diễn đàn Dự án & Source code C#, ASP.NET
    Trả lời: 0
    Bài viết cuối: 09-02-2010, 08:20 PM
  5. Thư giãn một tí với trò chơi ảo thuật
    Gửi bởi meoconlongvang trong diễn đàn Sản phẩm phần mềm của bạn
    Trả lời: 7
    Bài viết cuối: 12-11-2008, 12:58 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