请教一下(((谢谢ovo
查看原帖
请教一下(((谢谢ovo
384450
XXXXXXXXXXXerxes楼主2022/11/10 21:25

想请教一下这个代码哪里有问题,丢进去20分,,谢谢quq...

#include<bits/stdc++.h>
using namespace std;
const int maxn=300;
int n;
double dis[20][20];
double x[maxn],y[maxn];
int vis[maxn];
double mindis,fdis=1e9;

void dfs(int u){
	if(mindis>=fdis) return;
	if(u==n){
		fdis=mindis;
		return;
	}
	for(int i=1;i<=n;i++){
		if(vis[i]==0){
			vis[i]=1;
			mindis+=dis[u][i];
			dfs(i);
			vis[i]=0;
			mindis-=dis[u][i];
		}
	}
	return;
}

int main(){
	cin>>n;
	for(int i=1;i<=n;i++) cin>>x[i]>>y[i];
	for(int i=0;i<=n;i++)
		for(int j=0;j<=n;j++){
			dis[i][j]=sqrt((x[i]-x[j])*(x[i]-x[j])+(y[i]-y[j])*(y[i]-y[j]));
		}
	dfs(0);
	printf("%.2lf",fdis);
	return 0;
}
2022/11/10 21:25
加载中...