📌  相关文章
📜  C++程序通过顺时针方向将第i行精确旋转i次来修改矩阵(1)

📅  最后修改于: 2023-12-03 15:14:04.823000             🧑  作者: Mango

C++程序实现顺时针旋转矩阵行

本程序通过顺时针方向将第i行精确旋转i次来修改矩阵。以下是实现此功能的C++代码片段:

#include <iostream>
#include <vector>

// 函数声明
void rotateRow(std::vector<std::vector<int>>& matrix, int i);

int main() {
    // 创建一个3x3矩阵作为示例
    std::vector<std::vector<int>> matrix = {{1, 2, 3},
                                             {4, 5, 6},
                                             {7, 8, 9}};

    // 旋转第1行
    rotateRow(matrix, 0);

    // 打印旋转后的矩阵
    for (const auto& row : matrix) {
        for (int num : row) {
            std::cout << num << " ";
        }
        std::cout << std::endl;
    }

    return 0;
}

// 顺时针旋转矩阵第i行i次
void rotateRow(std::vector<std::vector<int>>& matrix, int i) {
    int numRotations = i % matrix[i].size();  // 计算需要旋转的次数

    for (int rotation = 0; rotation < numRotations; rotation++) {
        int lastElement = matrix[i].back();  // 取出最后一个元素
        matrix[i].pop_back();  // 移除最后一个元素
        matrix[i].insert(matrix[i].begin(), lastElement);  // 将最后一个元素插入到第一个位置
    }
}

此程序可以根据给定的矩阵和行索引,在顺时针方向上精确旋转该行指定次数。您可以根据需要修改矩阵大小和行索引,以及调整旋转次数。希望这对您有所帮助!