棋子翻轉

題目描述
在4x4的棋盤上擺滿了黑白棋子,黑白兩色的位置和數目隨機其中左上角座標爲(1,1),右下角座標爲(4,4),現在依次有一些翻轉操作,要對一些給定支點座標爲中心的上下左右四個棋子的顏色進行翻轉,請計算出翻轉後的棋盤顏色。

給定兩個數組A和f,分別爲初始棋盤和翻轉位置。其中翻轉位置共有3個。請返回翻轉後的棋盤。

IDEA

注意 棋盤上座標值從(1,1)開始,而給定的二維vector(A和f)從0開始存儲,要注意轉換

通過座標(x,y)來確定其上下左右的座標。

翻轉用異或,0^1=1,1^1=0,實現翻轉

CODE

class Flip {
public:
    vector<vector<int> > flipChess(vector<vector<int> > A, vector<vector<int> > f) {
        // write code here
        for(int i=0;i<f.size();i++){
            int x=f[i][0]-1;
            int y=f[i][1]-1;
            if(x-1>=0){
                A[x-1][y]^=1;
            }
            if(x+1<=A.size()-1){
                A[x+1][y]^=1;
            }
            if(y-1>=0){
                A[x][y-1]^=1;
            }
            if(y+1<=A.size()-1){
                A[x][y+1]^=1;
            } 
        }
        return A;
    }
};


發佈了230 篇原創文章 · 獲贊 5 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章