代码如下
#include<bits/stdc++.h>
using namespace std;
int n,x[20],y[20],z[20];
double ans=0xFFFFF,m=0;
double ss(int v,int w){
return sqrt((x[v]-x[w])*(x[v]-x[w])+(y[v]-y[w])*(y[v]-y[w]));
}
void dfs(int s,int t,double xx,double yy){
if(s>n){
ans=min(m,ans);
}
else{
for(int i=1;i<=n;i++){
if(z[i]) continue;
double m1=m;
m+=ss(t,i);
z[i]=1;
dfs(s+1,i,x[i],y[i]);
z[i]=0;
m=m1;
}
}
}
int main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>x[i]>>y[i];
}
x[0]=0,y[0]=0;
dfs(1,0,0,0);
cout<<fixed<<setprecision(2)<<ans;
}
感觉思路没错,不知道哪里出了问题
2,4,7,8AC了,3WA了,其余都超时