C++计算n阶行列式

#include 
#include 
using namespace std;

const int N = 105;
int p[N][N], n, ans;

int f(int a[][N], int u, int k)
{
     
    if(u <= 1) return a[0][0];
    int ans = 0;

    for(int i = 0; i < u; i++)
    {
     
        int k1 = 0, k2 = 0;
        int b[N][N];
        for(int m = 1; m < u; m++)
        {
     
            for(int j = 0; j < u; j++)
            {
     
                if(j == k) continue;
                else b[k1][k2++] = a[m][j];
            }
            k2 = 0, k1++;
        }
        
        if(i % 2 == 1) ans -= a[0][i] * f(b, u - 1, 0), k++;
        else ans += a[0][i] * f(b, u - 1, 0), k++;
    }
    return ans;
}

int main(void)
{
     
    while(cin >> n && n)
    {
     
        ans = 0;
        for(int i = 0; i < n; i++)
        {
     
            for(int j = 0; j < n; j++)
               cin >> p[i][j];
        }

        ans = f(p, n, 0);
        cout << ans << endl;
    }
    return 0;
}

没什么卵用,仅供娱乐

你可能感兴趣的:(题解)