以前就開始看劉汝佳的白皮書了,不過眼高手低,沒有碼過,發現問題好多。於是開始敲一敲。
題意:
#include <cstdio>
#include <cmath>
#include <iostream>
using namespace std;
typedef struct{
int x,y,z;
}NODE;
NODE g[22];
int n,k;
double d[1<<22];
double dis(int i,int j){
NODE a(g[i]), b(g[j]);
return sqrt(((double)(a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y)+(a.z-b.z)*(a.z-b.z)));
}
int main(){
cin >> n;
for (int i(0);i<n;i++)
cin >> g[i].x >> g[i].y >> g[i].z;
for ( int i(1);i<(1<<n);i++){
d[i] = 1e10;
int k;
for (k=0;k<n;k++)
if ( i & (1<<k) ) break;
for (int j(k+1);j<n;j++)
if (i & (1<<j))
d[i] = min(d[i],dis(k,j)+d[i^(1<<j)^(1<<k)]);
}
cout << d[(1<<n)-1] << endl;
return 0;
}