题目
从标准输入读入一个 m×n 的二维整数矩阵,计算其转置矩阵(将原矩阵的行与列互换,生成 n×m 矩阵)并按标准格式输出。
输入格式:第一行输入原矩阵的行数 m 和列数 n;随后 m 行每行输入 n 个整数。
输出格式:输出转置后的 n×m 矩阵,共 n 行,每行包含 m 个整数,以空格分隔。
数据范围与约定:1 ≤ m, n ≤ 20。
思路与算法
1. 矩阵转置坐标变换
转置操作的几何本质是关于主对角线翻转,元素对应关系为:b[j][i] = a[i][j]。
2. 维度的逆置
原矩阵尺寸为 m 行 n 列,转置后新矩阵必须以 n 行 m 列进行外层与内层的双重循环遍历输出。
完整程序
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int m = sc.nextInt();
int n = sc.nextInt();
int[][] a = new int[m][n];
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
a[i][j] = sc.nextInt();
}
}
// 矩阵转置:以列为外层循环,行为内层循环
for (int j = 0; j < n; j++) {
for (int i = 0; i < m; i++) {
System.out.print(a[i][j] + (i + 1 < m ? " " : "\n"));
}
}
}
}运行示例
输入:
2 3
1 2 3
4 5 6输出:
1 4
2 5
3 6