我需要帮助,我正在尝试在 Java 中使用 Lattice Multiplication,以便在我必须为一个类编写的 BigInt 类中使用。
现在我有代码将算法的加法部分所需的数字存储在一个二维数组中。从那里开始,我不知道如何制作一个循环来遍历数组并将数字添加到对角线中。
例如这里是测试号等:
200 *311 = 62200
数组持有:
6 0 0
2 0 0
2 0 0
6在数组中是(2,2),右下是(0,0)
我需要加入一条对角线,比如(1,0) + (0,1) = 0
问题是我该怎么做,因为它不仅以不同的方式向上和向左移动,而且从 1 个元素到 2 个元素再到 3 个元素,然后以另一种方式返回,当然这会得到数字越大越长。
这是我的代码:
public int multiply(BigInt val){
int[] bigger;
int[] smaller;
int[] dStore;
int lengthMax = (val.getSize()+this.getSize()) - 1;
int first = 0;
int second = 0;
int[][] tempResult;
//Checks to see which is bigger and then adds that to bigger
if(val.getSize() >= this.getSize()){
bigger = val.getData();
smaller = this.getData();
dStore = new int[val.getSize()+this.getSize()];
}else{
bigger = this.getData();
smaller = val.getData();
dStore = new int[val.getSize()+this.getSize()];
}
tempResult = new int[smaller.length][bigger.length];
for(int i=0;i < smaller.length;i++){
for(int j = 0;j < bigger.length;j++){
tempResult[i][j] = smaller[i] * bigger[j];
}
}
** 下面有返回语句等
这可能有助于更好地解释 lattice multi:Lattice Multi Video
最佳答案
我会尝试不同的方法。查看视频中的格子,想象一下您将阵列向左旋转一点,使对角线变为垂直。该数组将如下所示:
2 3 5
8 3
2 4 0
现在,只需汇总各列即可得到总数。
您当然必须首先将数字拆分为数字数组。最简单的方法(但不是最有效的)是将它们转换成字符串......
祝你好运!
关于java - 矩阵乘法Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4996299/