[英]How do I find out if a rectangle can be covered by another rectangle?
給定兩個矩形的邊長,我必須編寫代碼來檢查第一個矩形是否可以被第二個矩形完全覆蓋。 只能旋轉第二個矩形以查看它是否可以覆蓋第一個矩形。
A和B是我們要覆蓋的第一個矩形的邊的長度,而C和D是將覆蓋第一個矩形的第二個矩形的邊的長度。
我嘗試了兩個代碼,但仍然無法正常工作。 首先是幼稚的解決方案,但我不知道它是否正確。
A, B, C, D = map(int, input().split())
if (C >= A and D >= B) or (C >= B and D >= A):
print("covered")
然后,我用我的數學技能找出了第二個矩形( l1
和l2
)的邊應為l1 >= A*sin(a) + B*cos(a)
和l2 >= A*cos(a) + B*sin(a)
。 a
是可以在0
到90º
的角度。 所以我的第二個代碼是:
A, B, C, D = map(int, input().split())
import math
a = 0
while a <= 90 and value == False:
ai = math.radians(a)
t1 = math.ceil(A*math.cos(ai) + B*math.sin(ai))
t2 = math.ceil(A*math.sin(ai) + B*math.cos(ai))
if (C >= t1 and D >= t2) :
value = True
a = a + 1
它適用於我進行的一些測試,但是我的代碼未得到正確的答案。 那么,我該怎么解決這個問題呢? 我的想法正確嗎?
如果我在語法,語法或數學上犯了任何其他錯誤,請隨時糾正我。
我認為您只需要檢查三種情況:
您無需檢查任何隨機角度。 如果在任何一般情況下重疊,則在以上三種情況之一中必須這樣做。
第三種情況是一種極限情況:考慮一個正方形的矩形桿。
您的代碼尚不清楚矩形的邊長到底是什么。
但是不應進行任何涉及角度的計算:並且僅當A.length <= B.lenght and A.width <= B.width
時, A
才能被B
完全覆蓋。
(對不起,我無法發表評論)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.