生活随笔
收集整理的這篇文章主要介紹了
CCF 坐标系画图
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
問題描述
在一一個定義了直角坐標系的紙上,畫一個(x1,y1)到(x2,y2)的矩形指將橫坐標范圍從x1到x2,縱坐標范圍
從y1到y(tǒng)2之間的區(qū)域涂上顏色。下圖給出了一個畫了兩個矩形的例子。第一個矩形是(1,1) 到(4, 4),用綠
色和紫色表示。第二個矩形是(2, 3)到(6, 5),用藍色和紫色表示。圖中,一共有15個單位的面積被涂上顏色,
其中紫色部分被涂了兩次,但在計算面積時只計算一次。在實際的涂色過程中,所有的矩形都涂成統(tǒng)-的顏色,圖中
顯示不同顏色僅為說明方便。給出所要畫的矩形,請問總共有多少個單位的矩形被涂上顏色?
輸入格式
輸入的第一行包含一個整數(shù)n,表示要畫的矩形的個數(shù)。
接下來n行,每行4個非負整數(shù),分別表示要畫的矩形的左下角的橫坐標與縱坐標,以及右上角的橫坐標與縱坐標。
import java
.util
.HashSet
;
import java
.util
.Scanner
;
public class CCF坐標系畫圖
{public static void main(String
[] args
) {Scanner s
=new Scanner(System
.in
);int n
=s
.nextInt();HashSet
<UnitGrid> set
=new HashSet<UnitGrid>();int []axis
=new int[4];for(int i
=1;i
<=n
;i
++) {for(int j
=0;j
<4;j
++) {axis
[j
]=s
.nextInt();}set
.addAll(transferToUniteGrid(axis
[0],axis
[1],axis
[2],axis
[3]));}System
.out
.println(set
.size());}private static HashSet
<UnitGrid> transferToUniteGrid(int x1
,int y1
,int x2
,int y2
){HashSet
<UnitGrid> set
=new HashSet<UnitGrid>();for(int i
=x1
;i
<x2
;i
++) {for(int j
=y1
;j
<y2
;j
++) {set
.add(new UnitGrid(i
,j
));}}return set
;}
}
class UnitGrid{int x
,y
;public UnitGrid(int x
,int y
) {this.x
=x
;this.y
=y
;}@Overridepublic boolean equals(Object o
) {if(o
==null
) return false;if(!(o
instanceof UnitGrid)) return false;UnitGrid ug
=(UnitGrid
)o
;if((this.x
==ug
.x
) && (this.y
==ug
.y
)) {return true;}return false;}@Overridepublic int hashCode() {int result
=17;return (37*result
+this.x
)*37+this.y
;}
}
總結
以上是生活随笔為你收集整理的CCF 坐标系画图的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。