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