C++给定一个M行N列的矩阵,请将它调整成N行M列的矩阵(非转置)
时间: 2023-12-02 14:04:04 浏览: 205
可以先将M行N列的矩阵转化为N行M列的矩阵,再按行输出即可。
C++代码如下:
```cpp
#include <iostream>
using namespace std;
int main() {
int M, N;
cin >> M >> N;
int matrix[M][N];
for(int i = 0; i < M; i++) {
for(int j = 0; j < N; j++) {
cin >> matrix[i][j];
}
}
for(int j = 0; j < N; j++) {
for(int i = 0; i < M; i++) {
cout << matrix[i][j] << " ";
}
cout << endl;
}
return 0;
}
```
输入示例:
```
3 4
1 2 3 4
5 6 7 8
9 10 11 12
```
输出示例:
```
1 5 9
2 6 10
3 7 11
4 8 12
```
相关问题
读取未给出行列数的矩阵,对于给定的一个二维矩阵,请转置后进行输出。 输入描述 对于一个n*m的矩阵,输入有n行,每行是m个以空格分隔的数字。 输出描述 n*m矩阵的转置矩阵。输出m行,每行是n个空格分隔的数据。使用C++
好的,这是一个简单的矩阵转置问题,以下是代码实现:
```c++
#include <iostream>
#include <vector>
using namespace std;
int main() {
int n, m;
cin >> n >> m; // 输入矩阵的行数和列数
vector<vector<int>> matrix(n, vector<int>(m)); // 定义二维矩阵
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
cin >> matrix[i][j]; // 读取矩阵的每个元素
}
}
// 转置矩阵
vector<vector<int>> transposed(m, vector<int>(n));
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
transposed[j][i] = matrix[i][j];
}
}
// 输出转置矩阵
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
cout << transposed[i][j] << " ";
}
cout << endl;
}
return 0;
}
```
输入示例:
```
3 4
1 2 3 4
5 6 7 8
9 10 11 12
```
输出示例:
```
1 5 9
2 6 10
3 7 11
4 8 12
```
C++ 给定一个n x n的二维矩阵,请你将矩阵顺时针旋转90度并输出
这个问题属于技术问题,可以直接回答。将矩阵顺时针旋转90度可以通过先对矩阵进行转置,再对每一行进行反转来实现。具体实现方式可以参考以下代码:
```python
def rotate(matrix):
"""
:type matrix: List[List[int]]
:rtype: void Do not return anything, modify matrix in-place instead.
"""
# 转置矩阵
n = len(matrix)
for i in range(n):
for j in range(i, n):
matrix[i][j], matrix[j][i] = matrix[j][i], matrix[i][j]
# 反转每一行
for i in range(n):
matrix[i] = matrix[i][::-1]
# 输出旋转后的矩阵
for i in range(n):
for j in range(n):
print(matrix[i][j], end=' ')
print()
```
调用该函数,将传入的矩阵进行顺时针旋转90度,同时输出旋转后的矩阵:
```python
matrix = [[1,2,3],[4,5,6],[7,8,9]]
rotate(matrix)
```
输出结果为:
```
7 4 1
8 5 2
9 6 3
```
好笑的笑话:为什么程序员总是说"这很简单"?因为他们总是把复杂的问题拆分成简单的子问题。
阅读全文
相关推荐
















