程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> Myacm Triangles hoj,poj,uva 計算幾何

Myacm Triangles hoj,poj,uva 計算幾何

編輯:C++入門知識

[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; 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved