矩形重疊(矩形相交,dp)

2022-09-04 07:39:13 字數 1277 閱讀 6371

平面有n個矩形,第乙個矩形左下標為(x1[1],y1[1]),右上標為(x2[1],y2[1]).

如果有2個或多個矩形有公共區域則認為他們相互重疊

計算平面內重疊矩形數量最多的地方有幾個矩形相互重疊

輸入第一行n(2<=n<=50),表示矩形的個數

第二行n個整數x1[i] (-10^9<=x1[i]<=10^9),表示左下角的橫座標

第三行 n個整數y1[i] (-10^9<=y1[i]<=10^9),表示左下角的縱座標

第四行n個整數x2[i] (-10^9<=x1[i]<=10^9),表示右上角的橫座標

第五行 n個整數y2[i] (-10^9<=y1[i]<=10^9),表示右上角的縱座標

輸出輸出乙個正整數, 表示最多的地方有幾個矩形相互重疊,如果都不重疊輸出1;

測試資料:

20 90 

0 90

100 200

100 200

#include #include 

#include

#include

#include

#include

using

namespace

std;

struct

node

;node c;

int fan(node a,node b) //

判斷a,b兩個矩形是否相交,矩形c是相交矩陣

else

return0;

}int

main()

for(int i=1; i<=n; i++)

for(int i=1; i<=n; i++)

for(int i=1; i<=n; i++)

//最長遞增子串行的模版

node dp[55

];

int pre[55

];//

memset(dp,0,sizeof(dp));

memset(pre,0,sizeof

(pre));

int maxs=1

;

int k=0

;

for(int i=1; i<=n; i++)

}if(dp[i].t>maxs)

}if(k==0

) cout

<<"1"

;

else

cout

}return0;

}

線段 矩形 矩形與矩形 相交

csharp view plain copy print?功能 判斷線段和矩形是否相交 先判斷線段的倆個端點是否在矩形的內部,在就必然相交 其次判斷線段的包圍盒是否和矩形相交,不相交的話線段和矩形肯定也不相交 最後判斷,矩形的四個頂點是否位於線段的兩側,是則必然相交,否則就不相交 csharp vi...

演算法5 8 矩形相交

在70年代,計算機已經發展了一段時間,晶元的規模也越來越複雜。因此人們不得不發明一些晶元設計的軟體。在軟體中完畢晶元的設計 除錯工作。當時。模擬執行的時候依據電路的設計,模擬的過程中須要不斷地推斷矩陣是否相交。那時候還沒有非常好的演算法。人們僅僅能通過暴力手段逐個推斷矩陣是否相交。在今天看來,這樣的...

判斷矩形相交以及求出相交區域

問題 給定兩個矩形a和b,矩形a的左上角座標為 xa1,ya1 右下角座標為 xa2,ya2 矩形b的左上角座標為 xb1,yb1 右下角座標為 xb2,yb2 1 設計乙個演算法,確定兩個矩形是否相交 即有重疊區域 2 如果兩個矩形相交,設計乙個演算法,求出相交的區域矩形 1 對於這個問題,一般的...