欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

线性代数矩阵计算

程序员文章站 2022-07-12 14:11:14
...

无脑bfs搞全排列

#include<iostream>
using namespace std;
int n;
int box[20];
int vis[20];
int s[20][20];
int res;
int check()
{
	int cnt=0;
	for(int i=1;i<n;i++)
		for(int j=0;j<i;j++)
			if(box[i]<box[j])
				cnt++;
	return cnt;
}
void bfs(int step)
{
	if(step==n)
	{
		int flag= check()&1? -1:1;
		int temp=1;
		for(int i=0;i<n;i++)
			temp*=s[i][box[i]];
		res+=temp*flag;
		return ;
	}
	for(int i=0;i<n;i++)
		if(vis[i]==0)
		{
			vis[i]=1;
			box[step]=i;
			bfs(step+1);
			vis[i]=0;
		}
	return ;
}
int main()
{
	cin>>n;
	for(int i=0;i<n;i++)
		for(int j=0;j<n;j++)
			scanf("%d",&s[i][j]);
	bfs(0);
	cout<<res<<endl;
}
/*
4
4 1 2 4
1 2 0 2
10 5 2 0
0 1 1 7

*/