1. Trang chủ
  2. » Công Nghệ Thông Tin

Bài toán trò chơi thú vị

6 2,6K 40
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 6
Dung lượng 62 KB

Nội dung

Bài toán trò chơi thú vị

Trang 1

Một số bài toán trò chơi

Ngô Minh Đức

A Giới thiệu

Trong bài viết này chúng ta sẽ xét một số bài toán trò chơi, từ dễ đến khó Về nguyên tắc, các bài toán trò chơi thường được cho dưới dạng: nhập vào một trạng thái của trò chơi, tìm nước đi “tốt nhất” có thể được, hoặc nhập vào một trạng thái của trò chơi, khẳng định người đi trước sẽ thắng hay thua, v.v

1 Trò chơi bốc sỏi

Đây là trò chơi đơn giản nhất, luật chơi như sau:

Có 2 người chơi, I và II và một đống sỏi có khối lượng là 21 viên

Mỗi nước đi được phép lấy không qúa 3 viên ra khỏi đống, nhưng phải lấy ít nhất 1 viên Hai người lần lượt đi và người I đi trước Ai lấy được viên sỏi cuối cùng sẽ thắng

Hướng dẫn: sau khi phân tích, dễ dàng nhận thấy người I luôn luôn thắng, chỉ cần đưa về

các vị trí 20,16,12,8,4 viên sỏi là được

Tổng quát nếu mỗi bước đi không được phép lấy qúa k viên sỏi, ta sẽ có các vị trí thắng

là bội số của k+1 Nếu n là bội số của k+1 thì người II thắng, còn không thì người I thắng

Nếu đổi luật thành người lấy được viên sỏi cuối cùng thì thua, ta cũng tìm được một chiến thuật chơi tốt Vị trí thắng là các vị trí thắng ban đầu cộng thêm 1

2 Làm rỗng và phân chia

Có hai cái hộp, ban đầu một hộp chứa m viên sỏi, hộp kia chứa n viên sỏi Ta kí hiệu là (m,n) với m>0, n>0 Hai người chơi lần lượt đi Một nước đi được phép làm rỗng (lấy hết sỏi ra) một hộp, và chia số sỏi trong hộp còn lại vào hai hộp, với ít nhất một viên trong mỗi hộp Người nào không đi được nữa là thua

Nhập vào: (m,n)

Xuất ra: WIN nếu người đi trước thắng, LOSE nếu người đi trước thua

Hướng dẫn: Vị trí thắng là các vị trí (m,n) sao cho cả m và n đều lẻ

Trang 2

Chứng minh: dùng phép quy nạp

Rõ ràng (1,1) là vị trí thắng

Giả sử điều khẳng định đúng với các vị trí (x,y), x,y<=n Ta chứng minh điều khẳng đỉnh đúng với các vị trí (x,y), x,y<=n+1

Ta chứng minh điều khẳng định đúng với các vị trí (m,n+1) trong đó m<=n+1

Nếu n lẻ => n+1 chẵn Ta cần chứng minh (m,n+1) là vị trí thua

Thật vậy (m,n+1)->(1,n) Theo gỉa thiết quy nạp (1,n) là vị trí thắng Do đó (m,n+1) là vị trí thua

Nếu n chẵn => n+1 lẻ

+ Nếu m chẵn, ta cần chứng minh (m,n+1) là vị trí thua

Thật vậy (m,n+1)->(1,m-1) Do m<=n+1 => m-1<=n => theo gt quy nạp (1,m-1) là vị trí thắng Do đó (m,n+1) à vị trí thua

+ Nếu m lẻ, ta cần chứng minh (m,n+1) là vị trí thắng

Thật vậy xét một nước đi bất kỳ từ (m,n+1) ta chứng minh nó là vị trí thua

- Trường hợp lấy m viên sỏi ra khỏi hộp 1

Ta có (m,n+1)->(p,q) trong đó p+q=n+1, p, q<=n Do n+1 lẻ => p chẵn hoặc q chẵn Theo gỉa thiết quy nạp => (p,q) là vị trí thua

- Trường hợp lấy n+1 viên sỏi ra khỏi hộp 2

Ta có (m,n+1)->(p,q) trong đó p+q=m Ta có p,q<=m-1<=n+1-1=n Do m lẻ => p chẵn hoặc q chẵn Theo gia thiết quy nạp => (p,q) là vị trí thua

Vậy (m,n+1) là vị trí thắng

Tương tự đối với các vị trí có dạng (n+1, m) trong đó m<=n+1

3 Ăn sôcôla

Một thanh sôcôla có dạng hình chữ nhật mxn, chia thành các ô vuông Hai người chơi lần lượt đi Một nước đi được phép bẻ một miếng sôcôla về phía góc trên phải để ăn Ô (1,1)

là vị trí có thuốc độc, người nào ăn phải thuốc độc trước là thua

Trang 3

Ví dụ ban đầu thanh sôcôla có kích thước 8x3, người I bẻ tại (6,2), người 2 bẻ tại (2,3) thì còn lại thanh sôcôla như hình trên Ô có dấu gạch chéo là ô có thuốc độc

Chứng minh rằng luôn tồn tại một nước đi thắng (nước đi đảm bảo thắng lợi) cho người

đi trước

Hướng dẫn: Xét nước đi chỉ bẻ 1 ô duy nhất (m,n), nếu đây là nước đi thắng, ta có điều

phải chứng minh Ngược lại, nếu đây là một nước đi thua, thế thì từ vị trí này người II sẽ

có một nước đi thắng, nhưng rõ ràng vị trí mới đạt được này sau khi người II đi cũng có thể đạt được từ vị trí ban đầu Bằng cách đi đến vị trí này ngay từ đầu, người I sẽ có một nước đi thắng Vậy luôn tồn tại nước đi thắng cho người đi trước

4 Trò chơi 3 đống sỏi

Có 3 đống sỏi, lần lượt gồm a,b,c viên sỏi Hai người lần lượt đi Mỗi nước đi được phép chọn một đống bất kỳ và lấy số lượng viên sỏi tùy ý ra khỏi đống đó, nhưng phải lấy ít nhất 1 Người nào lấy được viên sỏi cuối cùng là thắng

Nhập vào: a,b,c

Xuất ra: LOSE nếu khẳng định người đi trước thua, còn không xuất ra a’,b’,c’ là nước đi

“tối ưu” của người đi trước Nếu có nhiều nước đi tối ưu, chỉ cần xuất ra 1

Hướng dẫn: vị trí thắng là các vị trí thỏa điều kiện: a xor b xor c = 0

Chứng minh: dựa vào tính chất của phép xor:

a xor a = 0 với mọi a

a xor b = b xor a

(a xor b) xor c = a xor (b xor c)

Vậy cách đi là như sau: từ vị trí (a,b,c)

Đặt a’=b xor c, b’ = a xor c, c’=b xor a

Nếu a’

Nếu b’

Nếu c’<>

Trang 4

B Một số trò chơi khác

1 Đồng xu lăn

Có một hàng các ô vuông được đánh số 0,1,2,3, Có một số lượng hữu hạn các đồng

xu được đặt trên các ô vuông, có thể có nhiều đồng xu trên cùng một ô Hai người chơi lần lượt đi Mỗi nước đi được phép lấy một trong các đồng xu và di chuyển về một ô bất kỳ ở bên trái Trò chơi kết thúc khi tất cả đồng xu đều nằm ở ô 0 Người

đi cuối cùng thắng

Dữ liệu vào: DONGXU.IN

Dòng 1: n – số lượng ô vuông ban đầu

n dòng sau, dòng i chứa một số nguyên là số đồng xu trên ô i tại thời điểm ban đầu Kết qủa: DONGXU.OUT

Gồm 1 dòng duy nhất, là “WIN” nếu khẳng định người đi trước thắng, “LOSE” nếu khẳng định người đi trước thua

2 Đồng xu trên cầu thang

Một cầu thang với n bậc chứa các đồng xu trên một số bậc Bậc i chứa xi đồng xu, i=1,2, n Một nước đi được phép di chuyển một số dương đồng xu từ bậc i xuống bậc i-1 Đồng xu chạm phải sàn nhà (bậc 0) được loại khỏi trò chơi Trò chơi kết thúc khi mọi đồng xu đã nằm trên sàn nhà Hai người chơi lần lượt đi, người đi cuối cùng thắng.

Dữ liệu vào: CAUTHANG.IN

Dòng 1: n – số lượng bậc thang

n dòng sau, dòng i chứa một số nguyên không âm xi là số đồng xu trên bậc thang i tại thời điểm ban đầu

Dữ liệu vào đảm bảo người đi trước luôn có nước đi thắng

Kết qủa file: DONGXU.OUT: xuất ra nước đi tối ưu cho người đi trước

Gồm 2 số nguyên i k, i là số hiệu bậc thang cần chuyển đồng xu xuống, k là số đồng

xu cần chuyển xuống Nếu có nhiều nước đi tối ưu cần xuất ra nước đi có số hiệu bậc thang phải chuyển là nhỏ nhất

Trang 5

3 Ít nhất một nửa

Có n đống sỏi Hai người chơi lần lượt đi Mỗi nước đi được phép chọn một đống sỏi bất kỳ và lấy ít nhất một nửa số sỏi trong đống đó Người lấy được viên sỏi cuối cùng là thắng Hãy giúp xác định người đi trước thắng hay thua (để phục vụ cho một tổ chức cá cược)

Dữ liệu vào: MOTNUA.IN

Dòng 1: n - số đống sỏi

n dòng sau: dòng i gồm 1 số nguyên dương là số lượng viên sỏi trên đống i

Kết qủa: MOTNUA.OUT

In ra “WIN” nếu khẳng định người đi trước thắng, “LOSE” nếu khẳng đỉnh người

đi trước thua.

4 Trò chơi bảng

Bàn cờ là một bảng một chiều gồm các hố, có thể lên đến 60 hố Mỗi người chơi cầm một trong hai loại cờ, trắng hoặc đỏ (kí hiệu W và R) Một nước đi được phép di chuyển một quân cờ bất cứ đâu trên bàn cờ, miễn là nó không chạm hoặc nhảy qua quân cờ khác Người nào không đi được nữa là thua

Nếu trò chơi chỉ có 1 quân cờ mỗi loại, cách chơi đơn giản là đi quân cờ đến sát cạnh quân đối phương Với 2 quân cờ mỗi loại, trò chơi trở nên phức tạp hơn:

Hơn nữa có thể xảy ra trạng thái hòa:

Yêu cầu: nếu người đi trước có thể thắng, hãy xác định nước đi tối ưu, còn không thì

xác định kết cục là người đi trước thua hay hòa.

Dữ liệu vào: BOARD.IN

Một dòng duy nhất gồm một chuỗi 60 ký tự, mỗi ký tự mô tả một hố trên bàn cờ: ‘0’

là hố rỗng, ‘1’ là quân cờ thuộc về người I, ‘2’ là quân cờ thuộc về người II Hai người chơi có cùng số lượng quân cờ, và có ít nhất 2 hố rỗng trên bàn cờ

Trang 6

Kết qủa: BOARD.OUT

Xuất ra:

+ ‘0’ nếu ván đấu kết thúc hòa

+ ‘2’ nếu người I sẽ thua

+ ‘1’ nếu người I sẽ thắng Trong trường hợp này theo sau ‘1’ phải mô tả nước đi tối

ưu, gồm 2 số, là thứ tự của hố nguồn và hố đích mà quân cờ di chuyển Nếu có nhiều nước đi, chọn nước đi có hố nguồn mang thứ tự nhỏ nhất Nếu vẫn có nhiều nước đi, trong các nước đi này, chọn nước đi có hố đích mang thứ tự nhỏ nhất.

Ngày đăng: 07/09/2012, 10:56

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w