java n个点 凸多边形_使用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

p[i] = new Point();

}

for(int i=0; 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

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

}

}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值