dfs求助
查看原帖
dfs求助
264548
Tangent233楼主2020/5/9 11:37
#include<bits/stdc++.h>
using namespace std;
int x[16],y[16],n;
bool p[16];
double ans=10000000,ln=0;
double l(int x1,int y1,int x2,int y2)
{
	double s=sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
	//printf("%.2f\n",s);
	return s;
}//求两点距离
void dfs(int k,int m)
{
	if(k=n+1) ans=min(ln,ans);
	else
	{
		for(int i=1;i<=n;i++)
		{
			if(!p[i])
			{
				p[i]=1;
				double s=l(x[m],y[m],x[i],y[i]);
				ln+=s;
				dfs(k+1,i);
				ln-=s;
				p[i]=0;
			}
		}
	}
}
int main()
{
	cin>>n;
	for(int i=1;i<=n;i++) cin>>x[i]>>y[i];
	dfs(1,0);
	printf("%.2f",ans);
	return 0;
}

这dfs不会调

2020/5/9 11:37
加载中...