#include<iostream>
#include<algorithm>
using namespace std;
int Min=100000;
int sum=0;
int a[100][100];
void dfs(int c,int n,int b[]){
if(c>=n){
Min=min(sum,Min);
return ;
}
for(int i=0;i<n;i++){
if(b[i]!=1){
sum+=a[c][i]; b[i]=1;
if(sum<Min)
dfs(c+1,n,b);
b[i]=0;
sum-=a[c][i];
}
}
}
int main()
{ int n;
cin>>n;
int b[n];
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
cin>>a[i][j];
b[j]=0;}
}
dfs(0,n,b);
cout<<Min<<endl;
}
原排列问题
最新推荐文章于 2024-09-02 23:09:18 发布