黑白棋 lduoj dfs深搜

2021-10-20 07:36:18 字數 1367 閱讀 5085

lagno是一種二人智力遊戲。遊戲設有乙個黑方和乙個白方。遊戲桌面是正方形的,包含8行8列。

如果黑方玩家走出這樣一步棋:將一枚黑子放在任一空格上,而在這個空格的八個方向(上、下、左、右和4個對角線方向)的至少乙個方向上有一排白子被夾在這枚新下的黑子和其他黑子之間,任何方向,在新黑子和原來黑子之間的所有白子都要變成黑子。為這個遊戲設計乙個程式,計算一步棋中黑方能轉變的白子數量的最大值。

輸入檔案lango.in共8行,每行8個字元;「.」代表乙個空格;「b」代表黑子,「w」代表白子

輸出檔案lango.out共一行,有乙個整數,表示一步中黑方能吃掉白子的最大數,如果無法吃掉就輸出「0」。

input copy

...

....

....

....

....

....

....bw...

...wb...

....

....

....

....

....

....

output

1input copy

...

....

....

....

....bb...

...b....

..bbw...

..www...

....wb...

....

...

output

2根據資料範圍來看,應該可以看出是一道深搜題

一般情況下要注意邊界 + 其他條件,在這個題目裡面邊界為== x >= 1 && x <= 8 && y >= 1 && y <= 8 == , 這裡面所有的資料均為合法資料,一旦x,y超過了這個範圍或者是不在這個範圍之內,就要區別出這一種異常

而對於其他條件,就是找到的棋子為 「.」 ,因為如果當前位置對應的棋子為 "."時,為不可取狀態(一排白色棋子,意為中間沒有別的棋子,意即不包括空白)

對於上面兩種情況,因為我們的函式要返回乙個int型別的數,為了能夠區分,我們可以返回乙個比較小的負數,比如 -10(某乙個方向最多有6個,所以返回-10足以),來區分以上兩種不可取的情況

main_code():

int dx[8]

=;int dy[8]

=;char s[10]

[10];

intdfs

(int x,

int y,

int dir)

intmain()

} ans =

max(ans,temp);}

} cout

}

黑白棋遊戲

黑白棋遊戲 time limit 10000ms memory limit 65536k total submit 9 accepted 5 case time limit 1000ms description 問題描述 黑白棋遊戲的棋盤由4 4方格陣列構成。棋盤的每一方格中放有1枚棋子,共有8枚白...

黑白棋遊戲

用c 封裝了一下,只完成了乙個雛形,有很多功能沒有新增上,但 的行數已經縮短了很多了。include include include includeusing namespace std class chess int counter 計數器,計算棋子個數 const friend void dra...

黑白棋遊戲

include include using namespace std char e 30 30 int a 30 30 int c 30 int x 30 int y 30 intf int n,int sum int pos sum 2 n int cnt 0 int flag 0 int w ...