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