私はJavaでStrassenのアルゴリズムを実装しようとしていますが、出力を単一の行列/2D配列に結合する必要がある段階にあります。私はSystem.arraycopy
配列をコピーするために使用しています。これは、2つの配列をトップダウンで連結するのに適していますが、それらを並べて連結する必要もあり、問題が発生しています。私はに遭遇しArrayOutOfBoundsException
ます。これが私のコードです
static int[][] Consolidate(int[][] c11, int[][] c12, int[][] c21, int[][] c22) {
/* check size compatibility */
if(c11[0].length == c21[0].length &&
c11.length == c12.length &&
c21.length == c22.length &&
c22[0].length == c12[0].length) {
int _rowSize = c11.length + c21.length;
int _colSize = c11[0].length + c12[0].length;
int[][] retArray = new int[_rowSize][_colSize];
int[][] ltArray = new int[_rowSize][c11[0].length];
int[][] rtArray = new int[_rowSize][c12[0].length];
System.arraycopy(c11, 0, ltArray, 0, c11.length);
System.arraycopy(c21, 0, ltArray, c11.length, c21.length);
System.arraycopy(c12, 0, rtArray, 0, c12.length);
System.arraycopy(c22, 0, rtArray, c12.length, c22.length);
System.arraycopy(ltArray, 0, retArray, 0, ltArray.length);
System.arraycopy(rtArray, 0, retArray, ltArray.length, rtArray.length);
return retArray;
}
return null;
}
最後の行
System.arraycopy(rtArray, 0, retArray, ltArray.length, rtArray.length);
例外をスローします。配列を並べて(列単位で)連結する方法はありますか?