Skip to content
Narrow screen resolution Wide screen resolution Auto adjust screen size Increase font size Decrease font size Default font size default color grey color
         
 | 
VNOI - Olympic tin học Việt Nam

Điểm tin VOJ

Số thành viên:6040
Số bài tập:1001
Số bài nộp:722923
Bài nộp hôm nay:0

Top 10 thành viên xuất sắc

HạngThành viênĐiểm
1mr_invincible587.9
2white_cobra418.6
3hieult403.4
4phaleq384.0
5vodanh9x368.2
6con_nha_ngheo352.0
7flash_mt350.2
8darksabers349.8
9yenthanh132345.3
10rockman9x_94343.1
Ioiwari Game In E-mail
(1 vote)
Người viết: Ngô Minh Đức   
21/04/2008

Ioiwari Game

Bài toán

Mancala là trò chơi với các viên bi và các hố đã được con người chơi từ rất lâu. Bài toán này giới thiệu một dạng của trò chơi. Trò chơi giành cho hai người trên một bảng hình tròn có bảy hố trên viền bảng và mỗi người có một bờ. Khi trò chơi bắt đầu bằng việc phân phối ngẫu nhiên 20 viên bi vào các hố sao cho mỗi hố chứa ít nhất 2 viên và nhiều nhất 4 viên bi. Hai người chơi lần lượt chơi. Một người chơi chọn một hố có các viên bi và lấy tất cả bi ra khỏi hố và cầm trên tay. Khi có bi trên tay mình, người chơi xét các hố theo chiều kim đồng hồ, bắt đầu từ hố ngay sau hố trống và thực hiện công việc sau:

·         ·        Có hơn một viên bi trên tay bạn: Nếu hố hiện tại đã chứa 5 viên bi thì hãy lấy 1 viên ra khỏi hố đó và đặt lên bờ của bạn, nếu không hãy đặt một viên bị trên tay bạn xuống hố đó.

·         ·        Trên tay bạn chỉ có một viên bi: Nếu hố hiện tại chứa ít nhất 1 và nhiều nhất 4 viên bi thì hãy lấy tất cả các viên bi từ hố đó và 1 viên trên tay bạn rồi đặt lên bờ, nếu không (hố đó chứa 0 hoặc 5 viên bi) hãy đặt viên bi trên tay bạn vào bờ của người chơi thứ hai.

Trò chơi kết thúc khi sau một lần đi tất cả các hố không còn chứa viên bi nào và người chiến thắng là người có nhiều viên bi hơn trên bờ của mình.

Người chơi thứ nhất luôn phải tìm cách chiến thắng. Hãy viết chương trình chơi trò Ioiwari cho người thứ nhất chiến thắng. Cách chơi của người thứ hai luôn tối ưu nghĩa là chỉ cần có một cơ hội anh ta sẽ chiến thắng và chương tình của bạn thua. 

INPUT và OUTPUT

Chương trình của bạn là người chơi thứ nhất và địch thủ là người chơi thứ hai. Khi chương trình của bạn bắt đầu, đầu tiên nó phải đọc một dòng với 7 số nguyên p1,..p7: chỉ số bi ban đầu trong các hố từ 1 đến 7. Các hố được được gán số nguyên từ 1 đến 7 theo chiều kim đồng hồ. 

Sau đó trò chơi bắt đầu với bờ trống. Chương trình phải chơi như sau: 

·         ·        Nếu đến lúc chương trình của bạn chơi, thì chương trình hãy viết số thứ tự hố được chơi vào output

·         ·        Nếu đến lúc đối thủ chơi, thì chương trình của bạn đọc số thứ tự hố được chơi từ input.

Công cụ

Cho trước một chương trình (ioiwari2 trên Linux, ioiwari2.exe trên Windows), với vai trò người chơi thứ hai. Đầu tiên, nó sẽ viết vào output dòng đầu tiên mà chương trình của bạn sẽ đọc mô tả số viên bi ban đầu trong các hố của trò chơi:

4 3 2 4 2 3 2

Sau đó, chương trình sẽ chơi trò chơi bằng cách đọc nước đi của người chơi thứ nhất từ input và viết nước đi của chính nó vào output. 

Hướng dẫn lập trình

Trong ví dụ dưới, bạn đọc số nguyên cuối cùng của input vào biến last và biến mymove.

Nếu bạn lập trình trong C++ và dùng iostream, hãy dùng lệnh sau để đọc input và viết vào output:         

cout<<mymove<<endl<<flush;   

cin>>last;

Nếu bạn lập trình bằng C hoặc C++ và dùng scanf và printf, hãy dùng lệnh sau để đọc input và viết vào output:             

printf("%d\n",mymove); fflush (stdout);

scanf ("%d", &last);               

Nếu lập trình bằng Pascal, hãy dùng lệnh sau để đọc input và viết vào output:                                

Writeln(mymove);

Readln(last);

Ví dụ

Dưới đây là thứ tự 6 nước đi

 
< Trước   Tiếp >