题目描述
在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;
}
};