不是,为什么好好的深搜+剪枝题题解全是状压dp啊!
写不了一点,这还是绿题吗?甚至还有模拟退火的
吐槽完了,还请大佬调一下我的代码
//#pragma GCC optimize(2)
//#pragma GCC optimize(3)
#include<iostream>
#include<cmath>
using namespace std;
int n;
bool b[16];
double ans=1<<30;
pair<int,int> a[16];
inline double dis(int x1,int y1,int x2,int y2)
{
return sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
}
void dfs(int k,int pre,double sum)
{
if(k>n)
{
ans=min(ans,sum);
return;
}
if(sum>ans) return;
for(register int i=1;i<=n;i++)
if(b[i]==0)
{
b[i]=1;
dfs(k+1,i,sum+dis(a[i].first,a[i].second,a[pre].first,a[pre].second));
b[i]=0;
}
}
int main()
{
scanf("%d",&n);
a[0].first=0;a[0].second=0;
for(register int i=1;i<=n;i++)
scanf("%d%d",&a[i].first,&a[i].second);
dfs(1,0,0);
printf("%.2lf",ans);
return 0;
}
最后请管理员放一篇dfs的题解吧