zoukankan      html  css  js  c++  java
  • 判断凸多边形

            以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;
      }
    }
  • 相关阅读:
    1.8 Hello World添加menu
    1.7 HelloWorld 添加视图
    1.6 Hello World
    1.5 组件开发基础
    awk
    sed
    grep / egrep
    Shell基础知识
    和管道符有关的命令
    Shell变量
  • 原文地址:https://www.cnblogs.com/hxsyl/p/3250152.html
Copyright © 2011-2022 走看看