// C# program check if a matrix is // singular or not. using System; class GFG { static readonly int N = 3; // Function to get cofactor of mat[p,q] in temp[,]. // n is current dimension of mat[,] static void getCofactor(int [,]mat, int [,]temp, int p, int q, int n) { int i = 0, j = 0; // Looping for each element of the matrix for (int row = 0; row < n; row++) { for (int col = 0; col < n; col++) { // Copying into temporary matrix only // those element which are not in given // row and column if (row != p && col != q) { temp[i, j++] = mat[row, col]; // Row is filled, so increase row // index and reset col index if (j == n - 1) { j = 0; i++; } } } } } /* Recursive function to check if mat[,] is singular or not. */ static int isSingular(int [,]mat, int n) { int D = 0; // Initialize result // Base case : if matrix contains single element if (n == 1) { return mat[0, 0]; } int [,]temp = new int[N, N]; // To store cofactors int sign = 1; // To store sign multiplier // Iterate for each element of first row for (int f = 0; f < n; f++) { // Getting Cofactor of mat[0,f] getCofactor(mat, temp, 0, f, n); D += sign * mat[0, f] * isSingular(temp, n - 1); // terms are to be added with alternate sign sign = -sign; } return D; } // Driver code public static void Main(String[] args) { int [,]mat = {{4, 10, 1}, {0, 0, 0}, {1, 4, -3}}; if (isSingular(mat, N) == 1) { Console.WriteLine("Matrix is Singular"); } else { Console.WriteLine("Matrix is non-singular"); } } } // This code contributed by Rajput-Ji