I-The Hurt Locker

来源:互联网 发布:电脑编程入门自学资料 编辑:程序博客网 时间:2024/06/05 13:24

这里写图片描述

Sample Input

1
(1,1) (2,2) (3,3)

9
(8,8)(1,3)(3,9)
(7,2)(2,2)(6,2)
(1,6)(1,5)(6,9)
(5,5)(4,7)(9,8)
(4,3)(7,6)(9,9)
(1,3)(6,9)(4,5)
(1,7)(1,2)(2,7)
(1,2)(1,1)(6,7)
(7,8)(6,7)(8,6)

Sample Output

14.14

17.41
16.37
16.05
16.64
14.26
15.36
16.78
14.49
17.26


需要初始化m,判断m和a的关系应该在判断IJK内,否则a = 1.79不动


#include <stdio.h>#include <stdlib.h>#include <math.h>#define DIS(x1,y1,x2,y2) (sqrt((x1-x2)*(x1-x2)+ (y1-y2)*(y1-y2)))#define LEN(x,y) (sqrt(x*x +y*y))#define MAXN 1000000int main(){    int i,j,n,t,k;    scanf("%d\n", &t);    while(t--)    {        double x[4] = {0}, y[4] = {0},m,a = MAXN;        scanf("(%lf,%lf)(%lf,%lf)(%lf,%lf)", &x[0],&y[0],&x[1],&y[1],&x[2],&y[2]);        fflush(stdin);        for(i=0; i<3 ;i++)        {            for(j = 0; j < 3; j++)            {                for(k = 0; k < 3; k++)                {                    if(i != j && i != k && j != k)                    {                        m =                        DIS(0, 0, x[i], y[i])+                        DIS(x[j], y[j], x[i], y[i])+                        DIS(x[j], y[j], x[k], y[k])+                        DIS(10, 10, x[k], y[k]);                        if(m < a)                            a = m;                    }                }            }        }        printf("%.2lf", a);        if(t != 0)            printf("\n");    }    return 0;}
0 0