MLE递归42pts 求助
查看原帖
MLE递归42pts 求助
560291
the_Dream_Chaser楼主2024/5/25 11:13

RT

#include<iostream>
using namespace std;
const int MAXN=700;
int q;
int det(int a[MAXN][MAXN],int n){//一个n*n的矩阵的行列式 
	int res=0;
	if(n==1)return a[0][0];
	else {
		for(int j=0;j<n;j++){
			int t[MAXN][MAXN];
			for(int i=1;i<n;i++){
				int k=0;
				for(int p=0;p<n;p++){
					if(p==j)continue;
					t[i-1][k++]=a[i][p];
				}
			}
			res+=((j%2==1)?-1:1)*a[0][j]*det(t, n-1)%q;
		}
	}
	return res%q;
}
int main(){
	int n;
    cin >> n; // 输入矩阵的大小
    cin>>q;
    int a[MAXN][MAXN];
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
            cin >> a[i][j];
        }
    }
    cout << det(a, n)%q<< endl; // 求解矩阵行列式并输出
}
2024/5/25 11:13
加载中...