C++转置正方形矩阵

C++转置正方形矩阵,就是正方形矩阵的a[i][j]=a[j][i]。

输入

3

1 2 3

4 5 6 

7 8 9

输出

1 4 7

2 5 8

3 6 9

#include<bits/stdc++.h>
using namespace std;
int main(){
    int n;
	cin>>n;
	int arr[n+5][n+5];
	for(int i=0;i<n;i++){
		for(int j=0;j<n;j++){
			cin>>arr[i][j];
		}
	} 
	cout<<endl;
	for(int i=0;i<n;i++){
		for(int j=0;j<n;j++){
			cout<<arr[j][i]<<" ";
		}
		cout<<endl;
	}
	return 0;
}

### C++ 矩阵转置的实现方法 在C++中,可以通过多种方式来实现矩阵转置的功能。一种常见的方式是利用双重`for`循环遍历整个二维数组,并交换相应位置上的元素。 对于给定的一个N×N方阵,可以先通过内部嵌套的两层循环完成矩阵转置操作。具体来说,在外层循环控制行索引的同时,内层循环则负责处理当前行之后的所有列索引,从而确保只对上三角部分或者下三角部分执行一次性的元素互换动作[^1]。 下面是一个具体的例子: ```cpp void transpose(vector<vector<int>>& matrix) { int n = matrix.size(); for (int i = 0; i < n; ++i){ for (int j = i + 1; j < n; ++j){ swap(matrix[i][j], matrix[j][i]); } } } ``` 上述代码片段展示了如何在一个正方形矩阵中进行原地转置的操作。这里的关键在于理解当访问到某个特定位置`(i,j)`时,只需要将其与对应的另一个位置`(j,i)`处的数据相交换即可达到目的[^2]。 另外还有一种更通用的做法适用于任意形状(不一定是正方形)的矩形矩阵。此时需要创建一个新的目标矩阵用于保存最终的结果,而不是尝试直接修改原始输入矩阵中的数据结构。这种方法虽然会占用额外的空间资源,但在某些情况下可能更加直观易懂[^3]。 #### 使用新矩阵存储结果的例子 ```cpp #include <vector> using namespace std; // 定义一个函数接受源矩阵作为参数返回其转置后的副本 vector<vector<int>> getTranspose(const vector<vector<int>>& originalMatrix) { size_t rows = originalMatrix.size(), cols = originalMatrix.empty() ? 0 : originalMatrix[0].size(); // 创建新的矩阵用来存放转置后的结果 vector<vector<int>> transposed(cols, vector<int>(rows)); // 遍历旧矩阵并将值赋给新矩阵相应的坐标 for(size_t r=0;r<rows;++r){ for(size_t c=0;c<cols;++c){ transposed[c][r]=originalMatrix[r][c]; } } return transposed; } ``` 此段程序能够接收任何尺寸合理的二维整数向量作为输入,并生成经过转置变换后的新对象而不改变原有数据[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值