每日一題 19 井字棋 程式設計基礎 陣列

2021-09-28 12:30:38 字數 1138 閱讀 3897

對於乙個給定的井字棋棋盤,請設計乙個高效演算法判斷當前玩家是否獲勝。

給定乙個二維陣列board,代表當前棋盤,其中元素為1的代表是當前玩家的棋子,為0表示沒有棋子,為-1代表是對方玩家的棋子。

測試樣例:

[[1,0,1],[1,-1,-1],[1,-1,0]]

返回:true

井字棋,是一種在3* 3格仔上進行的連珠遊戲,三個相同就代表獲勝。

井字棋有四種情況表示當前玩家獲勝:

1)行全為1, 即行的和為3

2)列全為1, 列的和為 3

3)主對角全為1, 對角和為3

4) 副對角全為1, 對角和為3

暴力列舉法針對該問題很快就能夠求解完畢,並且非常好理解,然而如果擴充套件為n*n的話,判斷和是否等於n,無法暴力列舉得出,下面**即能夠完成該項拓展。

暴力列舉法:

class

board

};

一般方法:

class

board

if(sum == row)

return

true;}

// 檢查每一列的和是否等於row

sum =0;

for(i =

0; i < row;

++i)

if(sum == row)

return

true;}

//檢查主對角線的和是否等於row

sum =0;

for(i =

0; i < row;

++i)

if(sum == row)

return

true

;// 檢查副對角線的和是否等於row

sum =0;

for(i =

0; i < row;

++i)

if(sum == row)

return

true

;return

false;}

};

每日一題 蝸牛爬井問題

每日一題 蝸牛爬井問題 每日一題 跳台階擴充套件問題 滴滴筆試題 有一口深度為high公尺的水井,井底有乙隻青蛙,它每天白天能夠沿井壁向上爬up公尺,夜裡則順井壁向下滑down公尺,若青蛙從某個早晨開始向外爬,對於任意指定的high up和down值 均為自然數 計算青蛙多少天能夠爬出井口?輸入描述...

每日一題力扣19

給你乙個鍊錶,刪除鍊錶的倒數第n個結點,並且返回鍊錶的頭結點。高階 你能嘗試使用一趟掃瞄實現嗎?class solution def removenthfromend self,head listnode,n int listnode dummy listnode 0 dummy.next head...

C語言基礎 二維陣列應用 一 井字棋

陣列是c語言中一種重要的資料型別,接下來我和大家分享用二維陣列完成乙個井字棋遊戲。井字棋,是一種在3 3格仔上進行的連珠遊戲,和五子棋類似。遊戲需要的工具僅為紙和筆,然後由分別代表o和x的兩個遊戲者輪流在格仔裡留下標記 一般來說先手者為x 任意三個標記形成一條直線,則為獲勝。井字棋的規則想必大家都已...