469 凸多邊形

2021-10-09 23:57:34 字數 1116 閱讀 2501

題目描述:

給定乙個按順序連線的多邊形的頂點,判斷該多邊形是否為凸多邊形。(凸多邊形的定義)

注:頂點個數至少為 3 個且不超過 10,000。

座標範圍為 -10,000 到 10,000。

你可以假定給定的點形成的多邊形均為簡單多邊形(簡單多邊形的定義)。換句話說,保證每個頂點處恰好是兩條邊的匯合點,並且這些邊 互不相交 。

示例 1:

[[0,0],[0,1],[1,1],[1,0]]

輸出: true

示例 2:

[[0,0],[0,10],[10,10],[10,0],[5,5]]

輸出: false

方法1:

主要思路:

(1)使用相鄰兩邊組成的向量的叉積判斷,若給出的多邊形是凸多邊形,則沿著乙個方向進行叉積的計算時,各對相鄰邊的叉積的正負號應該是一致的,若是不一致,則不是凸多邊形;

class

solution

; pair<

int,

int> cur=;if

(pre.first*cur.second-pre.second*cur.first>0)

int index=1;

//判斷隨後的各對相鄰邊的叉積的正負性

while

(index

;int tmp=pre.first*cur.second-pre.second*cur.first;if(

(tmp>

0&&is_negative)

||(tmp<0&&

!is_negative)

)++index;

}//跳出迴圈,說明都一致,返回true

return

true;}

};

劃分凸多邊形

時間限制 800ms 記憶體限制 65535k 提交次數 0 通過次數 0 題型 程式設計題 語言 g gcc vc 問題描述 乙個正凸n邊形,可以用n 3條互不相交的對角線將正n邊形分成n 2個三角形。現在要求讀入n邊形的n n 20 輸出不同劃分方法的總數 要求解的是劃分方法數,而不需要輸出各種...

驗證多邊形是否為凸多邊形

驗證多邊形是否為凸多邊形 2108 shape of hdu include define debug 0 int crossmulti int x0,int y0,int x1,int y1,int x2,int y2 int main int n,i int f x,f y 第1個點 int s...

凸多邊形的劃分

給定乙個具有 n 個頂點的凸多邊形,將頂點從 1 至 n 標號,每個頂點的權值都是乙個正整數。將這個凸多邊形劃分成 n 2 個互不相交的三角形,對於每個三角形,其三個頂點的權值相乘都可得到乙個權值乘積,試求所有三角形的頂點權值乘積之和至少為多少。輸入格式 第一行包含整數 n,表示頂點數量。第二行包含...