gpt4 book ai didi

java - 如何在java中生成行优先和列优先矩阵?

转载 作者:行者123 更新时间:2023-12-01 11:38:40 25 4
gpt4 key购买 nike

我正在尝试完成一项作业,该作业要求我在 Java 中创建一个方法,当给定所需的高度和宽度时,该方法会创建一个行主矩阵或列主矩阵。

enter image description here这是我到目前为止所拥有的:

public static int[][] increasingMatrix(int width, int height, boolean format){


if (format) { // generate row-major matrix
int[][] array = new int[height][];

int count = 0;

for (int i = 0; i < height; i++) {
array[i] = new int[width];
for (int j = 0; j < width; j++) {
array[i][j] = count;
count++;
}
}

return array;

} else {
int[][] array = new int[width][];


int count = 0;

for (int i = 0; i < width; i++) {
array[i] = new int [height];
for (int j = 0; j < height; j++) {
array[j][i] = count;
count ++;
}
}

return array;
}

}

但是,当我尝试对生成的数组运行测试时,列主矩阵(据我所知)生成不正确。行主矩阵似乎生成正确。

你能看出我做错了什么吗?我已经盯着这个看了几个小时,但似乎无法取得任何突破。

谢谢!

最佳答案

你的代码是错误的。矩阵中的第一个索引始终是宽度。

记住:矩阵是数组的数组。第一个索引是矩阵的宽度,第二个索引是高度。

试试这个:

if(format) {
return buildRowMajorMatrix(width, height);
} else {
return buildColumnMajorMatrix(width, height);
}

其中 buildRowMajorMatrix 看起来像:

private int[][] buildRowMajorMatrix(int width, int height) {

int[][] matrix = new int[width][height];
int cellValue = 0;

for(int columnIndex = 0 ; columnIndex < width ; columnIndex++) {
for(int rowIndex = 0 ; rowIndex < height ; rowIndex++, cellValue++) {
matrix[columnIndex][rowIndex] = cellValue;
}
}

return matrix;
}

buildColumnMajorMatrix 看起来像:

private int[][] buildColumnMajorMatrix(int width, int height) {

int[][] matrix = new int[width][height];
int cellValue = 0;

for(int rowIndex = 0 ; rowIndex < height ; rowIndex++) {
for(int columnIndex = 0 ; columnIndex < width ; columnIndex++, cellValue++) {
matrix[columnIndex][rowIndex] = cellValue;
}
}

return matrix;
}

关于java - 如何在java中生成行优先和列优先矩阵?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29736015/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com