日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

矩形

發布時間:2025/3/15 编程问答 15 豆豆
生活随笔 收集整理的這篇文章主要介紹了 矩形 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Description

在一個平面上有n個矩形。每個矩形的邊都平行于坐標軸并且都具有值為整數的頂點。我們用如下的方式來定義塊。
? 每一個矩形都是一個塊。
? 如果兩個不同的矩形有公共線段,那么它們就組成了一個新的塊來覆蓋它們原來的兩個塊。
例子:
在圖1中的矩形組成了兩個不同的塊。

寫一個程序:
? 從文件PRO.IN中讀入矩形的個數以及它們的頂點。
? 找出這些矩形形成的不同的塊的個數。
? 將結果寫入文件PRO.OUT。

Input

在輸入文件PRO.IN的第一行又一個整數n,1 <= n <=7000,表示矩形的個數。接下來的n行描述矩形的頂點,每個矩形用四個數來描述:左下頂點坐標(x,y)與右上頂點坐標(x,y)。每個矩形的坐標都是不超過10000的非負整數。

Output

在文件PRO.OUT的第一行應當僅有一個整數—表示由給定矩形組成的不同的塊的個數。

Sample Input

9
0 3 2 6
4 5 5 7
4 2 6 4
2 0 3 2
5 3 6 4
3 2 5 3
1 4 4 7
0 0 1 4
0 0 4 1

Sample Output

2

分析
1.判斷兩兩矩形是否有重合部分。
2.有就做并查集,合并成一個集合。
3.for一次判斷有多少個集合。

程序:

var f,x,y,p,q:array [0..8000] of longint; i,j,n,ans,k,l:longint; function find(c:longint):longint; beginif f[c]=c then exit(c);f[c]:=find(f[c]);exit(f[c]); end;beginreadln(n);for i:=1 to n dof[i]:=i;for i:=1 to n dobeginreadln(x[i],y[i],p[i],q[i]);for j:=1 to i-1 doif (p[i]>=x[j])and(p[j]>=x[i])and((q[i]>=y[j])and(q[j]>=y[i]))and(((p[i]<>x[j])and(p[j]<>x[i]))or((q[i]<>y[j])and(q[j]<>y[i]))) thenif find(i)<>find(j) then f[find(i)]:=find(j);end;for i:=1 to n doif f[i]=i then inc(ans);writeln(ans); end.

轉載于:https://www.cnblogs.com/YYC-0304/p/9500020.html

總結

以上是生活随笔為你收集整理的矩形的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。