题意:
前16组是被查找组,然后给出每组数据,从16组数据中找出符合公式 D的最小值。。
思路:
一道水题。遍历每组数据,暴力解之~~~
代码:
#include
<
iostream
>
#include < cmath >
#include < cstdio >
using namespace std;
typedef struct
{
int x1,x2,x3;
}Color;
Color c[ 16 ];
int fun(Color cm, int i)
{
return sqrt((cm.x1 - c[i].x1) * (cm.x1 - c[i].x1) + (cm.x2 - c[i].x2) * (cm.x2 - c[i].x2) + (cm.x3 - c[i].x3) * (cm.x3 - c[i].x3));
}
int main( void )
{
// freopen("input.txt","r",stdin);
for ( int i = 0 ;i < 16 ;i ++ )
{
cin >> c[i].x1 >> c[i].x2 >> c[i].x3;
}
Color ct,cq;
int d;
while (cin >> ct.x1 >> ct.x2 >> ct.x3,ct.x1 !=- 1 )
{
d = fun(ct, 0 );cq = c[ 0 ];
for ( int j = 1 ;j < 16 ;j ++ )
{
int t = fun(ct,j);
if (d > t) {d = t;cq = c[j];}
}
cout << " ( " << ct.x1 << " , " << ct.x2 << " , " << ct.x3 << " ) " << " maps to " << " ( " << cq.x1 << " , " << cq.x2 << " , " << cq.x3 << " ) " << endl;
}
return 0 ;
}
#include < cmath >
#include < cstdio >
using namespace std;
typedef struct
{
int x1,x2,x3;
}Color;
Color c[ 16 ];
int fun(Color cm, int i)
{
return sqrt((cm.x1 - c[i].x1) * (cm.x1 - c[i].x1) + (cm.x2 - c[i].x2) * (cm.x2 - c[i].x2) + (cm.x3 - c[i].x3) * (cm.x3 - c[i].x3));
}
int main( void )
{
// freopen("input.txt","r",stdin);
for ( int i = 0 ;i < 16 ;i ++ )
{
cin >> c[i].x1 >> c[i].x2 >> c[i].x3;
}
Color ct,cq;
int d;
while (cin >> ct.x1 >> ct.x2 >> ct.x3,ct.x1 !=- 1 )
{
d = fun(ct, 0 );cq = c[ 0 ];
for ( int j = 1 ;j < 16 ;j ++ )
{
int t = fun(ct,j);
if (d > t) {d = t;cq = c[j];}
}
cout << " ( " << ct.x1 << " , " << ct.x2 << " , " << ct.x3 << " ) " << " maps to " << " ( " << cq.x1 << " , " << cq.x2 << " , " << cq.x3 << " ) " << endl;
}
return 0 ;
}