大家好,我是开车的阿Q,自动驾驶的时代已经到来,没时间解释了,快和阿Q一起上车。作为自动驾驶系统工程师,必须要有最好的C++基础,让我们来一起刷题吧。
题目考察的知识点
二维数组操作,模拟
题目解答方法的文字分析
这个问题可以通过模拟来解决。我们可以创建一个二维数组来表示牛群方阵,然后模拟每次移动的过程。
首先,我们可以初始化一个 n*n 的二维数组,并按照牛的编号填充每个位置。
然后,进行 k 次移动操作。每次移动操作,我们可以创建一个临时的二维数组,用来存放移动后的结果。根据规则,我们可以计算每个位置在移动后的位置,然后将对应的牛的编号填入临时数组。
最后,将临时数组赋值给原始数组,更新牛群方阵。
本题解析所用的编程语言
C++
完整且正确的编程代码
#include <vector>
using namespace std;
class Solution {
public:
vector<vector<int>> rotateII(int n, int k) {
vector<vector<int>> matrix(n, vector<int>(n)); // 牛群方阵
int num = 1; // 牛的编号,从1开始
// 初始化牛群方阵
for (int i = 0; i < n; ++i) {
for (int j = 0; j < n; ++j) {
matrix[i][j] = num++;
}
}
// 进行 k 次移动操作
for (int t = 0; t < k; ++t) {
vector<vector<int>> temp(n, vector<int>(n)); // 临时数组,存放移动后的结果
// 根据规则进行移动操作
for (int i = 0; i < n; ++i) {
for (int j = 0; j < n; ++j) {
int newRow = (i - 1 + n) % n;
int newCol = (j - 1 + n) % n;
temp[newRow][newCol] = matrix[i][j];
}
}
// 将临时数组赋值给原始数组,更新牛群方阵
matrix = temp;
}
return matrix;
}
};

京公网安备 11010502036488号