90分求助!
查看原帖
90分求助!
1045301
Hamburger999楼主2023/11/3 17:18

如何优化

#include<bits/stdc++.h>
using namespace std;

void dfs(int i,int x);
double a[20],b[20];
double dist[20][20],mind=0xffffff,dqd;int n,use[20];

int main(){
	scanf("%d",&n);
	for(int i=1;i<=n;i++){
		scanf("%lf%lf",&a[i],&b[i]);
	}
	a[0]=b[0]=0;
	for(int i=0;i<=n;i++){
		for(int j=0;j<=n;j++){
			dist[i][j]=sqrt(pow(a[i]-a[j],2)+pow(b[i]-b[j],2));
		}
	}
	dfs(0,0);
	printf("%.2lf",mind);
}

void dfs(int f,int x){
	if(f==n){
		mind=dqd;
	}
	else{
		for(int i=1;i<=n;i++){
			if(use[i]==0&&dqd+dist[x][i]<mind){
				use[i]=1;
				dqd+=dist[x][i];
				dfs(f+1,i);
				use[i]=0;
				dqd-=dist[x][i];
			}
		}
	}
}

测评结果链接

QQQQQwQ

2023/11/3 17:18
加载中...