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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

CCF 坐标系画图

發(fā)布時間:2023/12/31 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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ù),分別表示要畫的矩形的左下角的橫坐標與縱坐標,以及右上角的橫坐標與縱坐標。

/*** Aurora 2020年4月17日 問題描述在一一個定義了直角坐標系的紙上,畫一個(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>();// 表示這個集合中只能保存UnitGrid 類型的對象,其他對象無法保存// 取出時 也直接是這個 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());//將集合大小輸出(也就是題目想求得的單位矩形的個數(shù))}/* 定義一個私有的靜態(tài)內部類,* public(公有的) ...;* private(私有的)僅僅能被當前類的成員訪問;* protected(受保護的)除了當前類以外,僅僅能被子類及同一個包中的類訪問;*///開始向set集合中添加元素(間接統(tǒng)計單位矩形的個數(shù)set.size())private static HashSet<UnitGrid> transferToUniteGrid(int x1,int y1,int x2,int y2){//實例化UnitGrid ,實例化后 UnitGrid 是HashSet類型的對象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;//用左下角的坐標來代表一個UnitGrid public UnitGrid(int x,int y) {//x y是局部變量this.x=x;//x y是成員變量this.y=y;}@Override// 重寫 equals 方法,若左下角坐標一致,則相等 public 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;}@Override//重寫hashCode方法public int hashCode() {//如果兩個UnitGrid 的x,y相等,則為同一元素int result=17;return (37*result +this.x)*37+this.y;} }

總結

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

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