棋子翻转

来源:互联网 发布:基金公司招聘条件 知乎 编辑:程序博客网 时间:2024/04/30 10:10
题目描述
在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;    }};


0 0