zoukankan      html  css  js  c++  java
  • UVA-10112

    #include <iostream>
    #include <cstdio>
    #include <cstring>
    #include <string>
    #include <cmath>
    #include <cctype>
    // #include "debug.h"
    using namespace std; 
    //浮点数陷阱比较时必须用绝对值abs,因为是比较是否在误差内相等。
    struct X{
        char name;
        long long x,y;
        X(char name,long long x,long long y){
            this->x=x;this->y=y;
            this->name=name;
        }
        X(){}
    } a[16];
    double area(int i,int j,int k){
        return abs(0.5*((a[k].y-a[i].y)*(a[j].x-a[i].x)-(a[j].y-a[i].y)*(a[k].x-a[i].x)));
    }
    bool ok(int i,int j,int k,long long x){
        if(i==j||i==k||j==k) return false;
        if(a[i].x==a[j].x&&a[j].x==a[k].x&&a[i].y==a[j].y&&a[j].y==a[k].y) return false;
        //neibu
        for(int p=0;p<x;p++){
            if(p!=i&&p!=j&&p!=k){
                double ss=area(i,j,k),s1=area(i,j,p),s2=area(i,k,p),s3=area(k,p,j),ss1;
                // printf("sad %.2f %2.f %.2f %.2f
    ",ss,s1,s2,s3);
                ss1=s1+s2+s3;
                // cout<<ss1<<endl;
                if(abs(ss-ss1)<1e-6)
                    return false;
            }
        }
        return true;
    }
    int main(){
        // std::ofstream file;
        // file.open(OUTPUT_FILE, std::ios::out);
    
        long long x,y,d1,d2;
        double smax=0;
        char cmax[4],c1;
        while (cin>>x&&x!=0)
        {
            smax=0;
            for(int i=0;i<x;i++){
                cin>>c1>>d1>>d2;
                a[i]=X(c1,d1,d2);
            }
            // cout<<ok(1,2,3,x)<<endl;
            for(int i=0;i<x;i++){
                for(int j=0;j<x;j++){
                    for(int k=0;k<x;k++){
                        if(ok(i,j,k,x)){
                            double ss=area(i,j,k);
                            // cout<<"ok"<<ss<<endl;
                            if(ss>smax){
                                smax=ss;
                                cmax[0]=a[i].name;
                                cmax[1]=a[j].name;
                                cmax[2]=a[k].name;
                            }
                        }
                    }
                }
            }
            cmax[4]='';
            cout<<cmax<<endl;
            // file<<cmax<<endl;
            // cout<<smax<<endl;s
        }
        return 0;
    }
  • 相关阅读:
    函数的嵌套
    函数对象
    命名关键字参数
    函数part4——函数的参数
    函数part3——函数的返回值
    函数part1——函数的使用原则
    flashback database 基本介绍一
    flash recovery area配置
    根据关键词获取进程ID然后杀掉进程
    rman的conver方法拷贝ASM文件
  • 原文地址:https://www.cnblogs.com/MorrowWind/p/13056494.html
Copyright © 2011-2022 走看看