C++计算n阶行列式

#include <iostream>
#include <cstring>
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;
}

没什么卵用,仅供娱乐

发布了20 篇原创文章 · 获赞 2 · 访问量 920

猜你喜欢

转载自blog.csdn.net/zhbbbbbb/article/details/104416490