CCF-CSP 模擬試題 畫圖 JAVA
阿新 • • 發佈:2018-12-17
問題描述
試題編號: | 201409-2 |
試題名稱: | 畫圖 |
時間限制: | 1.0s |
記憶體限制: | 256.0MB |
問題描述: |
問題描述 在一個定義了直角座標系的紙上,畫一個(x1,y1)到(x2,y2)的矩形指將橫座標範圍從x1到x2,縱座標範圍從y1到y2之間的區域塗上顏色。 給出所有要畫的矩形,請問總共有多少個單位的面積被塗上顏色。 輸入格式 輸入的第一行包含一個整數n,表示要畫的矩形的個數。 輸出格式 輸出一個整數,表示有多少個單位的面積被塗上顏色。 樣例輸入 2 樣例輸出 15 評測用例規模與約定 1<=n<=100,0<=橫座標、縱座標<=100。 |
答題欄
試題分析:
建立二維陣列作為整個座標系,陣列中的值預設為0,當做沒塗色狀態,1代表已塗色
x1和y1儲存最小的橫,縱座標(用來作為迴圈的起點),x2和y2儲存橫縱座標的最大值(作為迴圈的終點)
每次迴圈塗色時,先檢查位置是否已經塗色(0代表沒塗色,1代表已塗色),若位置狀態為0,則將位置狀態設定為1,計數器加1(代表塗色面積加1)。最後輸出計數器的值即為塗色的面積。
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner s = new Scanner(System.in); int N = s.nextInt(); int[][] pos = new int[101][101]; int x1=0, x2=0, y1=0, y2=0, temp=0; int i, j, k, counter=0; for(i=0; i<N; i++) { x1 = s.nextInt(); y1 = s.nextInt(); x2 = s.nextInt(); y2 = s.nextInt(); if(x1 > x2) { temp = x1; x1 = x2; x2 = temp; } if(y1 > y2) { temp = y1; y1 = y2; y2 = temp; } //填色 for(j=y1; j<y2; j++) { for(k=x1; k<x2; k++) { if(pos[j][k] != 1) { pos[j][k] = 1; counter++;//面積加1 } } } } System.out.printf("%d",counter); } }