CCF 201803 4 試題名稱 棋局評估

2021-09-11 09:42:50 字數 1492 閱讀 9503

參考部落格鏈結

只能說,太厲害了。

第一眼看到這個題可以說是毫無思路,根本無從下手!

這道題最大的難點我覺得在於怎麼實現最優策略行棋。在這道題中,由於題目的特殊性,題目定義alice贏則得分為正,bob贏則得分為負,所以搜尋在哪個空位落子是最優的選擇時,可以通過在棋盤的空白處上不斷嘗試放棋,對於alice而言,他下棋的最優策略是讓棋盤最後下完得分的值越高越好,反之,bob的目標就是讓得分越低越好,一開始我還覺得alice就盡力讓棋盤得分為正不就行了嗎,反正這樣就是代表他贏,但是細細想一下,最優策略應該是要贏並且要盡可能快速地結束戰鬥才對,所以他的最優策略應該是讓得分盡可能高,也就是棋盤上空白的地方盡可能多,也就代表盡快贏下比賽。不得不說這個解法真是精妙啊。

100分**

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

using

namespace std;

int a[5]

[5];

int size =3;

bool

win(

int k)

if(a[1]

[1]== a[2]

[2]&& a[1]

[1]== a[3]

[3]&& a[1]

[1]== k)

return

true;if

(a[1][

3]== a[2]

[2]&& a[2]

[2]== a[3]

[1]&& a[2]

[2]== k)

return

true

;return

false;}

intdfs

(int k)

if(k ==1&&

win(2)

)return

-empty-1;

if(k ==2&&

win(1)

)return empty+1;

if(empty ==0)

return0;

int alice =

-1000000

,bob =

10000000

;for

(int i =

1;i <=

3; i++)}

}if(k ==1)

return alice;

if(k ==2)

return bob;

}int

main

(int argc,

char

const

*ar**)

return0;

}

CCF201803 4 棋局評估(100分)

問題描述 試題編號 201803 4 試題名稱 棋局評估 時間限制 1.0s 記憶體限制 256.0mb 問題描述 問題描述 alice和bob正在玩井字棋遊戲。井字棋遊戲的規則很簡單 兩人輪流往3 3的棋盤中放棋子,alice放的是 x bob放的是 o alice執先。當同一種棋子佔據一行 一列...

CCF201803 4棋局評估(100分)

這道題用對抗搜尋可以得到答案 試題編號 201803 4 試題名稱 棋局評估 時間限制 1.0s 記憶體限制 256.0mb 問題描述 問題描述 alice和bob正在玩井字棋遊戲。井字棋遊戲的規則很簡單 兩人輪流往3 3的棋盤中放棋子,alice放的是 x bob放的是 o alice執先。當同一...

ccf 201803 4 棋局評估 (對抗搜尋)

棋局評估 問題描述 alice和bob正在玩井字棋遊戲。井字棋遊戲的規則很簡單 兩人輪流往3 3的棋盤中放棋子,alice放的是 x bob放的是 o alice執先。當同一種棋子佔據一行 一列或一條對角線的三個格仔時,遊戲結束,該種棋子的持有者獲勝。當棋盤被填滿的時候,遊戲結束,雙方平手。alic...