题目描述
在4x4的棋盘上摆满了黑白棋子,黑白两色的位置和数目随机其中左上角坐标为(1,1),右下角坐标为(4,4),现在依次有一些翻转操作,要对一些给定支点坐标为中心的上下左右四个棋子的颜色进行翻转,请计算出翻转后的棋盘颜色。
给定两个数组A和f,分别为初始棋盘和翻转位置。其中翻转位置共有3个。请返回翻转后的棋盘。
测试样例:
[[0,0,1,1],[1,0,1,0],[0,1,1,0],[0,0,1,0]],[[2,2],[3,3],[4,4]]
返回:[[0,1,1,1],[0,0,1,0],[0,1,1,0],[0,0,1,0]]
1 #include<iostream> 2 #include<vector> 3 using namespace std; 4 class Flip { 5 public: 6 vector<vector<int> > flipChess(vector<vector<int> > A, vector<vector<int> > f) { 7 // write code here 8 int r=A.size(); //计算行数 9 int c=A[0].size(); //计算列数 10 int r1 = f.size(); //计算行数 11 int c1 = f[0].size(); //计算列数 12 cout << r1 << endl; 13 for (int i = 0; i < r1; i++) 14 { 15 int row = f[i][0]; 16 int col = f[i][1]; 17 cout << row << " " << col << endl; 18 if (row - 1 >= 1) 19 { 20 A[row - 1 - 1][col - 1] = abs(A[row - 1 - 1][col - 1] - 1); 21 } 22 if (row + 1 <= r ) 23 { 24 A[row + 1 - 1][col - 1] = abs(A[row + 1 - 1][col - 1] - 1); 25 } 26 if (col - 1 >= 1) 27 { 28 A[row - 1][col - 1 - 1] = abs(A[row - 1][col - 1 - 1] - 1); 29 } 30 if (col+1<=c) 31 { 32 A[row - 1][col + 1 - 1] = abs(A[row - 1][col + 1 - 1] - 1); 33 } 34 } 35 return A; 36 } 37 }; 38 int main() 39 { 40 vector<vector<int>> A{ { 0, 0, 1, 1 }, { 1, 0, 1, 0 }, { 0, 1, 1, 0 }, { 0, 0, 1, 0 } }; 41 vector<vector<int>> f{ { 2,2}, {3,3 }, {4,4 }}; 42 Flip F; 43 vector<vector<int>> b = F.flipChess(A, f); 44 for (int i = 0; i < 4; i++) 45 { 46 for (int j = 0; j < 4; j++) 47 { 48 cout << b[i][j] << " "; 49 } 50 cout << endl; 51 } 52 system("pause"); 53 return 0; 54 }
时间: 2024-10-10 09:50:14