我正在研究一种简单的加密算法,因此我需要将两个矩阵相乘:
这是第一个:
$ ln -s ~/vbootstrap/bin/pipenv ~/pipenv
$ ~/pipenv shell
Launching subshell in virtual environment...
vagrant@vagrant:~/my_project$ . /home/vagrant/.local/share/virtualenvs/my_project-KmT425B_/bin/activate
(my_project) $
这是第二个:
86 65 76 76
69 45 71 82
65 78 68 69
根据我工作的page,结果应该是:
13 9 3 5
2 1 4 6
4 6 2 7
8 5 4 1
我在这里留下了无效的代码:
2160 1675 974 1428
1927 1502 857 1194
1825 1416 919 1338
显然,在变量计数方面,某个变量与矩阵的大小不匹配,但我无法解决它。
答案 0 :(得分:0)
这是与您尝试执行的操作类似的解决方案,您可以根据需要使用它。您的问题源于您对尺寸感到困惑。
public class Main {
public static void main(String[] args) {
int r1 = 3, c1 = 4;
int r2 = 4, c2 = 4;
int[][] firstMatrix = { {x, x, x, x}, {x, x, x, x}, {x, x, x, x} };
int[][] secondMatrix = { {x, x, x, x}, {x, x, x, x}, {x, x, x, x}, {x, x, x, x} };
// Mutliplying Two matrices
int[][] product = multiplyMatrices(firstMatrix, secondMatrix, r1, c1, c2);
// Displaying the result
displayProduct(product);
}
public static int[][] multiplyMatrices(int[][] firstMatrix, int[][] secondMatrix, int r1, int c1, int c2) {
int[][] product = new int[r1][c2];
for(int i = 0; i < r1; i++) {
for (int j = 0; j < c2; j++) {
for (int k = 0; k < c1; k++) {
product[i][j] += firstMatrix[i][k] * secondMatrix[k][j];
}
}
}
return product;
}
public static void displayProduct(int[][] product) {
System.out.println("Product of two matrices is: ");
for(int[] row : product) {
for (int column : row) {
System.out.print(column + " ");
}
System.out.println();
}
}
}
在双精度数组中,其[行] [列]-您的输出将具有3行和4列(如从网站上看到的),因此结果的尺寸应为resultado [3] [4]。您的Mensaje矩阵应为[3] [4],而不是[4] [3]。我想您可以解决其余的问题。