程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> HDU2108-Shape of HDU

HDU2108-Shape of HDU

編輯:C++入門知識

計算幾何凸包問題;   使用叉積判斷是否所有點都滿足同一方向   p1( x1 ,y1 ) , p2( x2 , y2 ) , p3(x3 , y3 ) ;   根據( x1 - x3 ) *(y2 - y3 ) - ( x2 - x3 ) * ( x1 - y3 來進行判斷) ;

 
#include<map>  
#include<set>  
#include<list>  
#include<cmath>  
#include<ctime>  
#include<deque>  
#include<stack>  
#include<bitset>  
#include<cstdio>  
#include<vector>  
#include<cstdlib>  
#include<cstring>  
#include<iomanip>  
#include<numeric>  
#include<sstream>  
#include<utility>  
#include<iostream>  
#include<algorithm>  
#include<functional>  
  
using namespace std ;  
const int maxn = 10005 ;  
struct node  
{  
    int x , y ;   
}edge[ maxn ] ;  
  
int judge( int a , int b , int c )  
{  
    return ( edge[ a ].x  - edge[ c ].x ) * ( edge[ b ].y - edge[ c ].y ) - ( edge[ b ].x - edge[ c ].x ) * ( edge[ a ].y - edge[ c ]. y ) ;   
}  
  
int main()  
{  
    int n , flag , temp ;  
    while( scanf( "%d" , &n ) != EOF )  
    {  
        if( !n )  
        {  
            break ;  
        }  
        flag = 1 ;  
        for( int i = 0 ; i < n ; ++i )  
        {  
            scanf( "%d%d" , &edge[ i ].x , &edge[ i ].y ) ;  
        }   
        for( int i = 0 ; i < n ; ++i )  
        {  
            temp = judge( i % n , ( i + 1 ) % n , ( i + 2 ) % n ) ;  
            if( temp < 0 )  
            {  
                flag = 0 ;  
                break ;  
            }  
        }  
        if( flag )  
            printf( "convex\n" ) ;  
        else  
            printf( "concave\n" ) ;  
    }  
    return 0;  
}  

 


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