| 
 | 
 
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册  
 
x
 
 本帖最后由 糖逗 于 2020-5-23 16:00 编辑  
 
题目描述: 
- 在4*4的棋盘上摆满了黑白棋子,黑白两色的位置和数目随机其中左上角坐标为(1,1),右下角坐标为(4,4),现在依次有一些翻转操作,要对一些给定支点坐标为中心的上下左右四个棋子的颜色进行翻转,请计算出翻转后的棋盘颜色。
 
  
 
- 输入描述:
 
 - 给定两个数组,分两行
 
  
- 第一行为分别为初始棋盘,为4*4矩阵,其中0表示白色棋子,1表示黑色棋子
 
  
- 第二行为翻转位置,其中翻转位置共有3个
 
  
 
 
- 输出描述:
 
 - 请返回翻转后的棋盘,为4*4矩阵
 
 - 示例1
 
 - 输入
 
 - [[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]]
 
  复制代码 
题目来源:牛客网 
 
- #include <vector>
 
 - #include <iostream>
 
 - using namespace std;
 
 -  
 
 -  
 
 - vector<vector<int> > solution(vector<vector<int> > &matrix, vector<vector<int> > &change){
 
 -     int len = 4;
 
 -     for(int i = 0; i < change.size(); i++){
 
 -         int a = change[i][0]-1;
 
 -         int b = change[i][1]-1;
 
 -         if(a - 1 >= 0){
 
 -             if(matrix[a-1][b] == 0){
 
 -                 matrix[a-1][b] = 1;
 
 -             }else matrix[a-1][b] = 0;
 
 -         }
 
 -         if(a+1 < len){
 
 -             if(matrix[a+1][b] == 0){
 
 -                 matrix[a+1][b] = 1;
 
 -             }else matrix[a+1][b] = 0;
 
 -         }
 
 -         if(b - 1 >= 0){
 
 -             if(matrix[a][b-1] == 0){
 
 -                 matrix[a][b-1]  = 1;
 
 -             }else matrix[a][b-1]  = 0;
 
 -         }
 
 -         if(b+1 < len){
 
 -             if(matrix[a][b+1] == 0){
 
 -                 matrix[a][b+1] = 1;
 
 -             }else matrix[a][b+1] = 0;
 
 -         }
 
 -     }
 
 -     return matrix;
 
 - }
 
 -  
 
 - int main(void){
 
 -     string input, input2;
 
 -     cin >> input;
 
 -     cin.clear();
 
 -     cin >> input2;
 
 -     vector<vector<int> > matrix;
 
 -     vector<int> temp;
 
 -     for(int i = 0; i < input.size(); i++){
 
 -         if(input[i] == '[' || input[i] == ']' || input[i] == ',') continue;
 
 -         if(temp.size() == 4){
 
 -             matrix.push_back(temp);
 
 -             temp.clear();   
 
 -         }
 
 -         temp.push_back(input[i]- '0');
 
 -     }
 
 -     matrix.push_back(temp);
 
 -  
 
 -  
 
 -     vector<vector<int> > change;
 
 -     vector<int> temp1;
 
 -     for(int i = 0; i < input2.size(); i++){
 
 -         if(input2[i] == '[' || input2[i] == ']' || input2[i] == ',') continue;
 
 -         if(temp1.size() == 2){
 
 -             change.push_back(temp1);
 
 -             temp1.clear();   
 
 -         }
 
 -         temp1.push_back(input2[i]- '0');
 
 -     }
 
 -     change.push_back(temp1);
 
 -  
 
 -     vector<vector<int> > res = solution(matrix, change);
 
 -     string out = "[";
 
 -     for(int i = 0; i < res.size(); i++){
 
 -         string temp3 = "[";
 
 -         for(int j = 0; j < res[i].size(); j++){
 
 -             if(j != res[i].size()-1)temp3 += to_string(res[i][j]) + ",";
 
 -             else temp3 += to_string(res[i][j]) + "]";   
 
 -         }
 
 -         if(i != res.size()-1) out += temp3 + ",";
 
 -         else out += temp3 + "]";
 
 -     }
 
 -     cout << out << endl;
 
 -  
 
 -  
 
 -     return 0;
 
 - }
 
  复制代码 |   
 
 
 
 |