【转】http://blog.youkuaiyun.com/zxy_snow/article/details/6153629
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include <string.h>
using namespace std;
typedef struct{
double x,y;
}coor;
coor c[4];
double len(double x,double y,double xx,double yy)
{
return (x-xx)*(x-xx)+(y-yy)*(y-yy);
}
int compute(coor a,coor b,coor c,coor d)
{
if( len(a.x,a.y,c.x,c.y) == len(a.x,a.y,b.x,b.y) + len(b.x,b.y,c.x,c.y) )
if( len(b.x,b.y,c.x,c.y) + len(c.x,c.y,d.x,d.y) == len(b.x,b.y,d.x,d.y) )
if( len(a.x,a.y,b.x,b.y) == len(b.x,b.y,c.x,c.y) )
return 1;
return 0;
}
int main()
{
int ncases,ind = 1,blank = 0,i,j,k,x,flag;
scanf("%d",&ncases);
while( ncases-- )
{
flag = 0;
if( blank ) printf("/n");
blank = 1;
for(i=0; i<4; i++)
scanf("%lf %lf",&c[i].x,&c[i].y);
for(i=0; i<4; i++)
for(j=0; j<4; j++)
{
if( j == i ) continue;
for(k=0; k<4; k++)
{
if( k == i || k == j ) continue;
x = 6 - k - i - j;
if( compute(c[i],c[j],c[k],c[x]) == 1 )
{
flag = 1;
goto end;
}
}
}
end:;
printf("Case %d:/n",ind++);
if( flag )
printf("Yes/n");
else
printf("No/n");
}
return 0;
}