师兄的一道笔试题



我的代码
#include<iostream>
#include<vector>
using namespace std;
int main()
{
int M{ 0 }, N{ 0 };
cin >> M >> N;
vector < vector<int>>v{};
v.resize(M);
vector < vector<int>>v1{};
v1.resize(M*N);
//构造原始矩阵
for (int i = 0; i < M; ++i) {
for (int j = 0; j < M; ++j) {
int x;
cin >> x;
v.at(i).push_back(x);
}
}
for (int i = 0; i < M*N; ++i) {
int j = i / N;//对应原矩阵的行
for (int k = 0; k < M; ++k) {//对应原矩阵的列
for (int m = 0; m < N; ++m) {
v1.at(i).push_back(v[j][k]);
}
}
}
for (int i = 0; i < v1.size(); i++)
{
for (int j = 0; j < v1[i].size(); j++)
{
cout << v1[i][j] << " ";
}
cout << endl;
}
cout << endl;
return 0;
}
这篇博客主要展示了如何使用C++实现一个二维数组的转置,并将转置后的矩阵输出。代码中首先读取矩阵的行数和列数,然后通过两层循环构造原始矩阵,接着进行转置操作,最后遍历转置后的矩阵并打印。
1588

被折叠的 条评论
为什么被折叠?



