• 判断凸多边形


            以HDU2108为例,去AC吧。
    
    //点逆序输入
    import java.util.Scanner;
    //1s
    public class HDU2108 {
      public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while(true) {
          int x,y;
          int n = sc.nextInt();
          if(0==n) {
            break;
          }
          Point[] p = new Point[n];
          for(int i=0; i<n; i++) {
            p[i] = new Point();
          }
          for(int i=0; i<n; i++) {
            x = sc.nextInt();
            y = sc.nextInt();
            p[i] = new Point(x,y);
          }
          //凸多边形
          boolean tag = true;
          int j,k,t;
          for(int i=0; i<n; i++) {
            //k,t直接对n求余就行了
            j = i;
            k = i+1;
            t = i+2;
            //以三角形为例看看
            if(k==n) {
              k = 0;
            }
            if(t==n+1) {
              t = 1;
            }
            if(t==n) {
              t = 0;
            }
            //注意是后面减去前面的
            Point p1 = new Point(p[k].x - p[j].x,
                p[k].y - p[j].y);
            Point p2 = new Point(p[t].x - p[k].x,
                p[t].y - p[k].y);
            //叉积
            int ans = p1.x*p2.y - p1.y*p2.x;
            if(ans<0) {
              tag = false;
              break;
            }
          }
          if(tag) {
            System.out.println("convex");
          }else {
            System.out.println("concave");
          }
        }
      }
    }
    class Point {
      int x;
      int y;
      public Point() {
        this.x = 0;
        this.y = 0;
      }
      public Point(int x, int y) {
        this.x = x;
        this.y = y;
      }
    }
  • 相关阅读:
    P1158 导弹拦截
    麦基数(p1045)
    Django之路由层
    web应用与http协议
    Django之简介
    Mysql之表的查询
    Mysql之完整性约束
    Mysql之常用操作
    Mysql之数据类型
    Mysql之数据库简介
  • 原文地址:https://www.cnblogs.com/hxsyl/p/3250152.html
Copyright © 2020-2023  润新知