当前位置: 首页 > 面试题库 >

转置2D阵列中的矩阵

徐智渊
2023-03-14
问题内容

我正在自学一些Java,并且坚持创建2D数组,该数组使用随机值对其进行初始化,然后创建该数组的转置。

示例输出为:

$ java Test1 22 333 44 555 6  
Enter the number of rows (1-10): 0  
ERROR: number not in specified range (1-10) !  
and so on until you enter the correct number of rows and columns.

原始矩阵

  1  22  
333  44  
555   6

转置矩阵

  1  333  555`  
 22   44    6`

^应该是最终输出。代码的一些帮助将不胜感激!

如果行或列的数量超出指定范围,我想编写代码以生成错误消息。以及是否从命令行读取矩阵元素而不是随机生成它们。

import java.util.Scanner;

public class Test1 {
    /** Main method */
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.print("Enter the number of rows (1-10): ");
        int rows = input.nextInt();
        System.out.print("Enter the number of columns (1-10): ");
        int cols = input.nextInt();

        // Create originalMatrix as rectangular two dimensional array
        int[][] originalMatrix = new int[rows][cols];

        // Assign random values to originalMatrix
        for (int row = 0; row < originalMatrix.length; row++)
            for (int col = 0; col < originalMatrix[row].length; col++) {
                originalMatrix[row][col] = (int) (Math.random() * 1000);
            }

        // Print original matrix
        System.out.println("\nOriginal matrix:");
        printMatrix(originalMatrix);

        // Transpose matrix
        int[][] resultMatrix = transposeMatrix(originalMatrix);


        // Print transposed matrix
        System.out.println("\nTransposed matrix:");
        printMatrix(resultMatrix);
    }

    /** The method for printing the contents of a matrix */
    public static void printMatrix(int[][] matrix) {
        for (int row = 0; row < matrix.length; row++) {
            for (int col = 0; col < matrix[row].length; col++) {
                System.out.print(matrix[row][col] + "  ");
            }
            System.out.println();
        } 
    }

    /** The method for transposing a matrix */
    public static int[][] transposeMatrix(int[][] matrix) {
        // Code goes here...
    }
}

问题答案:

这是返回转置矩阵的int [] []的简单方法…

public static int[][] transposeMatrix(int[][] matrix){
    int m = matrix.length;
    int n = matrix[0].length;

    int[][] transposedMatrix = new int[n][m];

    for(int x = 0; x < n; x++) {
        for(int y = 0; y < m; y++) {
            transposedMatrix[x][y] = matrix[y][x];
        }
    }

    return transposedMatrix;
}

比起打印二维矩阵,您可以使用如下方法:

public static String matrixToString(int[][] a){
    int m = a.length;
    int n = a[0].length;

    String tmp = "";
    for(int y = 0; y<m; y++){
        for(int x = 0; x<n; x++){
            tmp = tmp + a[y][x] + " ";
        }
        tmp = tmp + "\n";
    }

    return tmp;
}


 类似资料:
  • 问题内容: 我正在尝试为python创建矩阵转置函数,但似乎无法使其工作。说我有 我想提出我的职能 因此,换句话说,如果我要将此2D数组打印为列和行,我希望将行变成列,将列变成行。 我到目前为止已经做到了,但是没有用 问题答案: Python 2: Python 3:

  • 给定一个2维正整数数组,求和最大的HxW子矩形。矩形的总和是该矩形中所有元素的总和。 输入:具有正元素的二维数组NxN子矩形的HxW大小 输出:HxW大小的子矩阵,其元素的总和最大。 我已经使用蛮力方法解决了这个问题,但是,我现在正在寻找一个具有更好复杂性的更好的解决方案(我的蛮力法的复杂性是O(n6))。

  • 矩阵(包括稀疏矩阵)的转置,即互换矩阵中所有元素的行标和列标,如图 1 所示: 图 1 矩阵转置示意图 但如果想通过程序实现矩阵的转置,互换行标和列标只是第一步。因为实现矩阵转置的前提是将矩阵存储起来, 数据结构中提供了 3 种存储矩阵的结构,分别是三元组 顺序表、行逻辑链接的顺序表和十字 链表。如果采用前两种结构,矩阵的转置过程会涉及三元组表也跟着改变的问题,如图 2 所示: 图 2 三元组表的

  • 我有一个大的NxN位数组,有K个1(其他都是0)。所有非零点的坐标都是已知的——换句话说,这个n×n数组可以表示为K对数组,每个数组包含一个非零点的x和y坐标。 给定一个HxW大小的子矩阵,我需要将其放在我的原始NxN数组上,使其覆盖大多数非零点。 输入:子矩阵的高度H和宽度W 输出:HxW子数组的x和y协弦,其内部有最多的协弦 之前也回答过类似的问题:2D矩阵中尺寸为HxW的最大子阵列,但在我的

  • 问题内容: 如何获得此矩阵的转置。任何更简单的算法都可以执行此操作… 第一个问题: 第二个问题: Zip给我下面的输出如下,当我不知道数组中有多少个元素时,我如何压缩,在这种情况下,我知道3个元素a [0],a [1],a [2],但是如何我压缩一个[n]个元素 问题答案: 问题答案: 感谢AFG的帮助

  • 我有一个数据集,它有4列/属性和150行。我想用最小最大规范化来规范化这个数据。到目前为止,我的代码是: 这里,和返回全局最小值和最大值。因此,这段代码实际上对2D矩阵中的所有值应用最小-最大规范化,以便全局最小值为0,全局最大值为1。 然而,我想对每一列分别执行相同的操作。具体来说,2D矩阵的每一列都应该独立于其他列进行最小-最大规格化。 我尝试使用只是使用和,但得到的错误说矩阵维度必须一致。