数据WATER~~~~
/*
* tyvj-1196
* mike-w
* 2011-11-9
*/
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
#define SIZE 22
#define INF 99999999
float p[SIZE][2];
float dist[SIZE][SIZE];
double ans=INF;
int tag[SIZE];
int N;
int search(int depth,double s)
{
if(2*depth==N)
{
if(s<ans) ans=s;
return 0;
}
int i,node;
double tmp;
for(i=0;i<N;i++)
if(!tag[i])
{
node=i;
break;
}
tag[node]=1;
for(;i<N;i++)
if(!tag[i] && (tmp=s+dist[node][i])<ans)
{
tag[i]=1;
search(depth+1,tmp);
tag[i]=0;
}
tag[node]=0;
return 0;
}
int main(void)
{
int i,j;
double dx,dy;
#ifndef ONLINE_JUDGE
freopen("in","r",stdin);
#endif
scanf("%d",&N);
for(i=0;i<=N;i++)
scanf("%f%f",p[i],p[i]+1);
for(i=0;i<N;i++)
for(j=i+1;j<N;j++)
{
dx=p[i][0]-p[j][0];
dy=p[i][1]-p[j][1];
dist[i][j]=sqrt(dx*dx+dy*dy);
}
search(0,0);
printf("%.2lf",ans);
return 0;
}
本文探讨了数据集中的优化算法应用,特别是如何利用距离计算提高效率与精度。通过实例展示了搜索算法在特定条件下的应用,包括节点选择、路径优化等关键步骤。
503

被折叠的 条评论
为什么被折叠?



