当前位置:编程学习 > C/C++ >>

Myacm Triangles hoj,poj,uva 计算几何

[cpp]
/*暴力枚举。
判断点是否在三角形内,用叉积求面积。
*/ 
#include <stdio.h> 
#include <cmath> 
#define eps 1e-8 
struct point 

    double x,y; 
    char op; 
} p[16]; 
double xmul(point a,point b,point c) 

    return fabs((b.x-a.x)*(c.y-a.y)-(b.y-a.y)*(c.x-a.x)); 

bool is_in(point o,point a,point b,point c) 

    double sum=xmul(o,a,b)+xmul(o,b,c)+xmul(o,c,a); 
    if(sum==xmul(a,b,c)) return true; 
    return false; 

int main() 

    int n,a,b,c; 
    while(scanf("%d",&n)==1&& n) 
    { 
        double ans=0; 
        for(int i=1; i<=n; i++) 
            scanf(" %c %lf %lf",&p[i].op,&p[i].x,&p[i].y); 
        for(int k=3; k<=n; k++) 
            for(int i=2; i<k; i++) 
                for(int j=1; j<i; j++) 
                { 
                    bool ret=false; 
                    for(int q=1; q<=n; q++) 
                    { 
                        if(q==i||q==j||q==k) continue; 
                        if(is_in(p[q],p[i],p[j],p[k])) 
                        { 
                            ret=true; 
                            break; 
                        } 
                    } 
                    if(!ret) 
                    { 
                        if(xmul(p[i],p[j],p[k])>ans) ans=xmul(p[i],p[j],p[k]),a=j,b=i,c=k; 
                    } 
                } 
        printf("%c%c%c\n",p[a].op,p[b].op,p[c].op); 
    } 
    return 0; 
补充:软件开发 , C++ ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,