描述
給出平面上4條線段,判斷這4條線段是否恰好圍成乙個面積大於0的矩形。
輸入 輸入第一行是乙個整數t(1<=t<=100),代表測試資料的數量。
每組資料報含4行,每行包含4個整數x1, y1, x2, y2 (0 <= x1, y1, x2, y2 <= 100000);其中(x1, y1), (x2,y2)代表一條線段的兩個端點。
輸出 每組資料輸出一行yes或者no,表示輸入的4條線段是否恰好圍成矩形。
樣例輸入
3 0 0 0 1
1 0 1 1
0 1 1 1
1 0 0 0
0 1 2 3
1 0 3 2
3 2 2 3
1 0 0 1
0 1 1 0
1 0 2 0
2 0 1 1
1 1 0 1
樣例輸出
yes
yes
no對於乙個矩形,四條線段兩兩之間,共有4個平行關係,8個垂直關係。
#include
using
namespace
std;
struct line
int vx()
int vy()
};bool isparallel(line& a, line& b)
bool isvertical(line& a, line& b)
bool issame(line& a, line& b)
bool judge(vector
& vec)
}return p == 4 && v == 8;
}int main()
if(judge(vec)) cout
<< "yes"
<< endl;
else
cout
<< "no"
<< endl;
}return
0;}
hihoCoder1040 矩形判斷
大體思路是可以出來的,就是先判斷能否組成四邊形,然後再判斷能否組成矩形。四邊形這部分比較難搞,但是我們有st l 啊,直接自定義乙個小於號,然後把所有的點扔進se t 最後看下si ze是不是等於 4 就好了。好,我們已經知道了這是乙個四邊形,再怎麼判斷它是否是矩形?思來想去啊,似乎計算幾何中沒有簡...
hihoCoder1040 矩形判斷
時間限制 1000ms 單點時限 1000ms 記憶體限制 256mb 描述給出平面上4條線段,判斷這4條線段是否恰好圍成乙個面積大於0的矩形。輸入輸入第一行是乙個整數t 1 t 100 代表測試資料的數量。每組資料報含4行,每行包含4個整數x1,y1,x2,y2 0 x1,y1,x2,y2 100...
矩形判斷 hihoCoder1040
題意 給四個線段,判斷是否圍成了乙個矩形。思路 先判定是不是平行四邊形,再判斷是否有乙個角是直角。判定是否是平行四邊形可以通過統計頂點數和邊長的個數來進行。判斷是否有乙個角是直角可以通過邊向量來判斷。起初我判斷是否有乙個角是直角通過任取三個頂點,然後通過勾股定理判斷是否存在乙個直角,想了很久才想到反...