首页 > 编程语言 >c++矩阵旋转问题

c++矩阵旋转问题

时间:2024-08-22 20:55:53浏览次数:13  
标签:const matrix int 矩阵 c++ 旋转 vector result

问题

有一个MxN的矩阵,设计函数将其顺时针旋转90度。
打印示例

Original matrix:
1 2 3 
4 5 6 
7 8 9 
Rotated matrix (90 degrees clockwise):
7 4 1 
8 5 2 
9 6 3 

代码

#include <iostream>
#include <vector>

using namespace std;

void rotateMatrix90Clockwise(const vector<vector<int>>& matrix, vector<vector<int>>& result) {
    int M = matrix.size();
    int N = matrix[0].size();

    // Resize the result matrix to be N x M
    result.resize(N, vector<int>(M, 0));

    for (int i = 0; i < M; ++i) {
        for (int j = 0; j < N; ++j) {
            // Place element matrix[i][j] into the correct position in result
            result[j][M - 1 - i] = matrix[i][j];
        }
    }
}

void printMatrix(const vector<vector<int>>& matrix) {
    for (const auto& row : matrix) {
        for (int val : row) {
            cout << val << ' ';
        }
        cout << endl;
    }
}

int main() {
    // Example usage
    vector<vector<int>> matrix = {
        {1, 2, 3},
        {4, 5, 6},
        {7, 8, 9}
    };

    vector<vector<int>> rotatedMatrix;
    rotateMatrix90Clockwise(matrix, rotatedMatrix);

    cout << "Original matrix:" << endl;
    printMatrix(matrix);

    cout << "Rotated matrix (90 degrees clockwise):" << endl;
    printMatrix(rotatedMatrix);

    return 0;
}

标签:const,matrix,int,矩阵,c++,旋转,vector,result
From: https://www.cnblogs.com/azureology/p/18374735

相关文章

  • C++—八股文总结(25秋招期间一直更新)
    1、const1.1指针常量和常量指针说说constint*a,intconst*a,constinta,int*consta,constint*consta分别是什么,有什么特点。constint*a==intconst*a; //可以通过a访问整数值,但不能通过a修改该整数的值,指针本身是可变的,可以指向不同的整数constint......
  • 从零开始学习C++之if判断语句
    当你想判断某个条件时,怎么办呢?当当当当(日常发疯),if语句就派上用场了。使用方法不多废话,使用格式如下:if(条件){ 代码}elseif(条件){ 代码}else{ 代码}注:elseif/else可以没有。这几个条件中只能满足一个。例:if(n==1){ cout<<1;}elseif(n==1)......
  • C/C++语言基础--指针三大专题详解3,完结篇(包括指针做函数参数,函数指针,回调函数,左右法
    本专栏目的更新C/C++的基础语法,包括C++的一些新特性前言指针是C/C++的灵魂,和内存地址相关联,运行的时候速度快,但是同时也有很多细节和规范要注意的,毕竟内存泄漏是很恐怖的指针打算分三篇文章进行讲解,本专题是三,完结篇,介绍了指针做函数参数,函数指针,回调函数,左右法则解决复......
  • C++好用的特性以及STL
    C++中基于范围的for循环程序的基本结构包括三种:顺序结构,选择结构(也称分支结构)和循环结构(也称程序的基本控制结构包括三种:顺序结构、选择结重复结构)。循环结构的实现方法比较多,除了使用while()、dowhile()和for()循环之外,C++11还提供了一种称为基于范围(Rane-based)的fo......
  • 从零开始学习C++之变量
    变量没啥好讲的,讲下类型和格式得了。变量类型:int:整数类型;范围大约为\(-2147000000\sim2147000000\)。longlong:长整型;范围大约是\(-2^{63}\sim2^{63}-1\)。unsignedint/longlong:不包括负数,整数范围扩大一倍。double:小数类型(比float进度高),大约能包含\(1......
  • C++异常处理详解
    目录一、异常处理的基本概念1.1例外类型1.2异常处理流程二、C++异常处理的语法2.1抛出异常2.2捕获异常三、示例代码示例:简单的除法操作3.1代码解析四、注意事项五、小结        异常处理是程序的一种控制结构,用于处理在程序执行期间可能出现的错误......
  • 从零开始学习C++之循环
    本文讲解C++中循环的使用。C++中较常用的两种循环为for循环和while循环。for循环for循环主要用于实现两个区间中间的枚举。例如:从\(1\sim100\)中输出所有数就能使用for循环解决。这是for循环标准格式:/*for(变量类型变量名=左区间;循环退出条件(如:i<=......
  • C++ const的用法详解
    前言const在C/C++中是十分重要的,如果单纯理解为"常量"那么你的格局就小了,今天在这里给大家介绍一下const在C++中具体详细的用法。一const的基本概念const名叫常量限定符,用来限定特定变量,以通知编译器该变量是不可修改的。习惯性的使用const,可以避免在函数中对某些不应修改的......
  • [小白入门]一文掌握C/C++中数组和循环结合(堵车问题、红绿灯问题)
    1.堵车问题假如现在给定从出发地到目的地的道路条数和每条路上的车辆情况为:第一条路第二条路第三条路第四条路第五条路第六条路90705278108120且车辆数大于50为轻度拥堵;大于70为中度拥堵;大于90为重度拥堵。那么如何存储这些数据?---很显然要用数......
  • C++常用容器
    目录一、引言二、顺序容器概览  1.vector——动态数组  2.deque——双端队列  3.list——双向链表三、关联容器探秘  1.set——集合  2.map——映射四、总结        在探讨C++容器的丰富世界时,我们将深入分析几种核心容器,并探讨它......