马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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;
}
|