fork download
  1. import java.lang.*;
  2.  
  3. class MP26
  4. {
  5. public static void main (String[] args)
  6. throws java.lang.Exception
  7. {
  8. int[][] A={{1,0,0},{0,1,0},{0,0,1},{1,0,1}};
  9. int[][] B={{1,2},{3,4},{5,6}};
  10. int[][] C = Matrix.valueOf(A).multiply(Matrix.valueOf(B)).getArray();
  11.  
  12. java.lang.System.out.println(Matrix.toString(C));
  13. }
  14.  
  15. private static class Matrix
  16. {
  17. private final int[][] array;
  18. private final int row;
  19. private final int col;
  20.  
  21. private Matrix (int[][] array)
  22. {
  23. this.array = array;
  24. this.row = array.length;
  25. this.col = array[0].length;
  26. }
  27.  
  28. static boolean isMatrix (int[][] array)
  29. {
  30. if (array == null)
  31. {
  32. return false;
  33. }
  34.  
  35. int col = -1;
  36. for (int[] line : array)
  37. {
  38. if (line == null)
  39. {
  40. return false;
  41. }
  42.  
  43. if (col < 0)
  44. {
  45. col = line.length;
  46. }
  47. else if (col != line.length)
  48. {
  49. return false;
  50. }
  51. }
  52.  
  53. if (col < 1)
  54. {
  55. return false;
  56. }
  57.  
  58. return true;
  59. }
  60.  
  61. Matrix multiply (Matrix B) throws MatrixException
  62. {
  63. if (B == null)
  64. {
  65. throw new NullArgumentException("B");
  66. }
  67.  
  68. if (col != B.row)
  69. {
  70. throw new MatrixException("Unmatch size of B.row");
  71. }
  72.  
  73. int[][] C = new int[row][B.col];
  74. for (int i = 0; i < row; ++i)
  75. {
  76. for (int j = 0; j < B.col; ++j)
  77. {
  78. for (int k = 0; k < col; ++k)
  79. {
  80. C[i][j] += array[i][k] * B.array[k][j];
  81. }
  82. }
  83. }
  84. return new Matrix(C);
  85. }
  86.  
  87. int[][] getArray ()
  88. {
  89. return array.clone();
  90. }
  91.  
  92. @Override
  93. public String toString ()
  94. {
  95. java.io.ByteArrayOutputStream buf
  96. = new java.io.ByteArrayOutputStream();
  97. java.io.PrintStream out
  98. = new java.io.PrintStream(buf);
  99.  
  100. for (int[] line : array)
  101. {
  102. for (int value : line)
  103. {
  104. out.print(value + " ");
  105. }
  106. out.println();
  107. }
  108.  
  109. return buf.toString();
  110. }
  111.  
  112. static String toString (int[][] array)
  113. {
  114. if (Matrix.isMatrix(array) == false)
  115. {
  116. throw new java.lang.IllegalArgumentException("array");
  117. }
  118. return new Matrix(array).toString();
  119. }
  120.  
  121. static Matrix valueOf (int[][] array)
  122. {
  123. if (Matrix.isMatrix(array) == false)
  124. {
  125. throw new java.lang.IllegalArgumentException("array");
  126. }
  127. return new Matrix(array.clone());
  128. }
  129. }
  130.  
  131. private static class MatrixException
  132. extends java.lang.Exception
  133. {
  134. MatrixException (String message)
  135. {
  136. super(message);
  137. }
  138. }
  139.  
  140. private static class NullArgumentException
  141. extends java.lang.IllegalArgumentException
  142. {
  143. NullArgumentException (String argname)
  144. {
  145. super(argname);
  146. }
  147. }
  148. }
Success #stdin #stdout 0.07s 381184KB
stdin
Standard input is empty
stdout
1 2 
3 4 
5 6 
6 8