求助,全部re
查看原帖
求助,全部re
1067565
lotus12154楼主2024/3/1 11:49
#include<iostream>
#include<cmath>
using namespace std;
int n;
double x[1000]={0};
double y[1000]={0};
int vis[100]={0};
double ans = 0x7fffffff;
double temp=0;

double cal(double x1,double y1,double x2,double y2)
{
    return sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));

}
double dfs(int j,double x0,double y0)
{
    if(j==n+1)
        ans = min(ans,temp);
    for(int i=1;i<=n;i++)
    {
        if(vis[i]==0)
        {   
            vis[i]=1;
            temp += cal(x0,y0,x[i],y[i]);
            dfs(j+1,x[i],y[i]);
            vis[i]=0;
            temp-=cal(x0,y0,x[i],y[i]);
        }
    }        
}
int main()
{   
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        cin>>x[i]>>y[i];
        
    }
    dfs(1,(double)0,(double)0);
    printf("%.2lf",ans); 
    system("pause");
    return 0;
}
2024/3/1 11:49
加载中...