public int[][] Multiply(int[][] a, int[][] b)
        {
            SquareMatrixValidator validator = new SquareMatrixValidator();

            validator.ValidateMatrices(a, b);
            int[][]         c          = new int[a.Length][];
            MatrixPartition aPartition = CreateDefaultPartition(a);
            MatrixPartition bPartition = CreateDefaultPartition(b);
            MatrixPartition cPartition = CreateDefaultPartition(a);

            c = MultiplyHelper(a, b, c, aPartition, bPartition, cPartition);
            return(c);
        }
        public int[][] Multiply(int[][] a, int[][] b)
        {
            SquareMatrixValidator validator = new SquareMatrixValidator();

            validator.ValidateMatrices(a, b);
            int[][] c = new int[a.Length][];
            for (int i = 0; i < a.Length; i++)
            {
                c[i] = new int[a.Length];
                for (int j = 0; j < a.Length; j++)
                {
                    c[i][j] = 0;
                    for (int k = 0; k < a.Length; k++)
                    {
                        c[i][j] += a[i][k] * b[k][j];
                    }
                }
            }
            return(c);
        }