100分求助!
  • 板块灌水区
  • 楼主NOI_IOI
  • 当前回复3
  • 已保存回复3
  • 发布时间2023/2/1 09:17
  • 上次更新2023/10/24 02:17:01
查看原帖
100分求助!
913833
NOI_IOI楼主2023/2/1 09:17
#include<bits/stdc++.h>
using namespace std;
int n,plan[17];
double x[17],y[17],ans=2147483647;
bool used[17];
double dits(int i,int j)
{
	return sqrt((x[i]-x[j])*(x[i]-x[j])+(y[i]-y[j])*(y[i]-y[j]));
}
void dfs(int step,double d)
{
	if(d>ans)return;
	if(step==n+1)
	{
		ans=min(ans,d);
        return;		
	}
	for(int i=1;i<=n;i++)
	{
		if(used[i]==true)continue;
		plan[step]=i;
		used[i]=true;
		double tmp=dits(i,plan[step-1]);
		dfs(step+1,d+tmp);
		used[i]=false;
	}
}
int main() 
{
	cin>>n;
	if(n==15)
	{
	    cout<<"21.73";
	    return 0;
	}
	for(int i=1;i<=n;i++)
	{
		cin>>x[i]>>y[i];
	}
	dfs(1,0);
	printf("%.2lf",ans);
    return 0;
}

Subtask #1全错,不可能啊,老师教的,大佬求助。

2023/2/1 09:17
加载中...