样例都没过,谁能看看,
查看原帖
样例都没过,谁能看看,
876786
__tsts_876786__楼主2022/11/19 20:38

我只要90pts

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<iomanip>
#include<algorithm>
#define LL long long
#define uli unsigned long long
using namespace std;
int n;
double x[20],y[20];
double ans=1000000005;
bool used[20];//记录跑没跑过
double f(double a,double b,double c,double d){
	return sqrt((a-c)*(a-c)-(b-d)*(b-d));
}
void d(int k,double s,int cnt){//s,算答案,cnt,计数,k,记录上一个坐标
	if(s>ans) return;//如果s比原先记录的最小答案大就不要了
	if(cnt>=n){//如果到n就返回
		ans=min(ans,s);
		return;
	}
	for(int i=1;i<=n;i++){//从一到n
		if(used[i]==0){//如果能走
			used[i]=1;//标记
			d(i,s+f(x[k],y[k],x[i],y[i]),cnt+1);//下一个dfs
			used[i]=0;//取消标记
		}
	}
}
int main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>x[i]>>y[i];
	}
	d(0,0,1);
	printf("%.2lf",ans);
	return 0;
}
2022/11/19 20:38
加载中...