使用JAVA判斷凸多邊形的示例代碼
以HDU2108為例,去AC吧。
//點(diǎn)逆序輸入
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直接對(duì)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;
}
}
- java判斷某個(gè)點(diǎn)是否在所畫(huà)多邊形/圓形內(nèi)
- java和matlab畫(huà)多邊形閉合折線圖示例講解
- java連連看游戲菜單設(shè)計(jì)
- JavaScript ES6中的簡(jiǎn)寫(xiě)語(yǔ)法總結(jié)與使用技巧
- JavaScript ES6箭頭函數(shù)使用指南
- JavaScript創(chuàng)建防篡改對(duì)象的方法分析
- JavaScript事件對(duì)象深入詳解
- JavaScript繼承的特性與實(shí)踐應(yīng)用深入詳解
- JavaScript函數(shù)的特性與應(yīng)用實(shí)踐深入詳解
- Java多邊形重心計(jì)算
相關(guān)文章
基于String不可變字符與StringBuilder可變字符的效率問(wèn)題
這篇文章主要介紹了String不可變字符與StringBuilder可變字符的效率問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-07-07Java開(kāi)發(fā)中的OOM內(nèi)存溢出問(wèn)題詳解
這篇文章主要介紹了Java開(kāi)發(fā)中的OOM內(nèi)存溢出問(wèn)題詳解,OOM,全稱(chēng)?Out?Of?Memory,意思是內(nèi)存耗盡或內(nèi)存溢出,當(dāng)JVM因?yàn)闆](méi)有足夠的內(nèi)存來(lái)為對(duì)象分配空間并且垃圾回收器也已經(jīng)沒(méi)有空間可回收時(shí),就會(huì)拋出這個(gè)?error,需要的朋友可以參考下2023-08-08java 中@Deprecated 注解的實(shí)例詳解
這篇文章主要介紹了java 中@Deprecated 注解的實(shí)例詳解的相關(guān)資料,這里對(duì)@Deprecated注解進(jìn)行了詳細(xì)介紹,希望能幫助到大家,需要的朋友可以參考下2017-08-08spring事務(wù)隔離級(jí)別、傳播機(jī)制以及簡(jiǎn)單配置方式
這篇文章主要介紹了spring事務(wù)隔離級(jí)別、傳播機(jī)制以及簡(jiǎn)單配置方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-01-01Java并發(fā)編程中使用Executors類(lèi)創(chuàng)建和管理線程的用法
這篇文章主要介紹了Java并發(fā)編程中使用Executors類(lèi)創(chuàng)建和管理線程的用法,文中舉了用其啟動(dòng)線程和設(shè)置線程優(yōu)先級(jí)的例子,需要的朋友可以參考下2016-03-03SpringBoot前后端分離解決跨域問(wèn)題的3種解決方案總結(jié)
前后端分離大勢(shì)所趨,跨域問(wèn)題更是老生常談,下面這篇文章主要給大家介紹了SpringBoot前后端分離解決跨域問(wèn)題的3種解決方案,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-05-05解決IDEA集成Docker插件后出現(xiàn)日志亂碼的問(wèn)題
這篇文章主要介紹了解決IDEA集成Docker插件后出現(xiàn)日志亂碼的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-11-11Hibernate的一對(duì)一,一對(duì)多/多對(duì)一關(guān)聯(lián)保存的實(shí)現(xiàn)
本文主要介紹了Hibernate的一對(duì)一,一對(duì)多/多對(duì)一關(guān)聯(lián)保存的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的很詳細(xì),感興趣的可以了解一下2021-09-09SpringBoot項(xiàng)目加載配置文件的6種方式小結(jié)
這篇文章給大家總結(jié)了六種SpringBoot項(xiàng)目加載配置文件的方式,通過(guò)@value注入,通過(guò)@ConfigurationProperties注入,通過(guò)框架自帶對(duì)象Environment實(shí)現(xiàn)屬性動(dòng)態(tài)注入,通過(guò)@PropertySource注解,yml外部文件,Java原生態(tài)方式注入這六種,需要的朋友可以參考下2023-09-09