public static void Main()
{"a1", "b1", "c1", "d1"},
{"a2", "b2", "c2", "d2"},
{"a3", "b2", "c3", "d3"},
Console.WriteLine(cofactors(matrix));
public static string cofactors(string[,] matrix)
if (matrix.GetLength(0) != matrix.GetLength(1))
throw new ArgumentException("must be squared", "matrix");
var order = matrix.GetLength(0);
return string.Format("({0} * {1}) - ({2} * {3})", matrix[0,0], matrix[1, 1], matrix[1, 0], matrix[0, 1]);
var builder = new StringBuilder();
for (var i = 0; i < order; i++)
var sign = (i % 2 == 0) ? "+" : "-";
var multiplier = matrix[0,i];
var submatrix = new string[order - 1, order -1];
for (var j = 0; j < order - 1; j++)
for (var k = 0; k < order - 1; k++)
var y = (k >= i) ? k + 1 : k;
submatrix[j, k] = matrix[x, y];
builder.Append(multiplier);
builder.Append("*(" + cofactors(submatrix) + ")");
return builder.ToString();