趣味問題:畫圖(c++實現)

來源:互聯網
上載者:User

標籤:

描述:在一個定義了直角座標系的紙上,畫一個(x1,y1)到(x2,y2)的矩形指將橫座標範圍從x1到x2,縱座標範圍從y1到y2之間的地區塗上顏色。給出了一個畫了兩個矩形的例子。第一個矩形是(1,1) 到(4, 4),用綠色和紫色表示。第二個矩形是(2, 3)到(6, 5),用藍色和紫色表示。圖中,一共有15個單位的面積被塗上顏色,其中紫色部分被塗了兩次,但在計算面積時只計算一次。在實際的塗色過程中,所有的矩形都塗成統一的顏色,圖中顯示不同顏色僅為說明方便。

 

 

給出所有要畫的矩形,請問總共有多少個單位的面積被塗上顏色。 

評測用例規模與約定 

1<=n<=100,0<=橫座標、縱座標<=100

輸入:

輸入的第一行包含一個整數n,表示要畫的矩形的個數。 

 接下來n行,每行4個非負整數,分別表示要畫的矩形的左下角的橫座標與縱座標,以及右上方的橫座標與縱座標。

輸出:輸出一個整數,表示有多少個單位的面積被塗上顏色。

input:2 

          1 1 4 4 

    2 3 6 5
output:15
分析:每個單位可以看成一個座標,我們使用座標圖中每個小正方形左下角座標代表該正方形,這樣整個座標圖可以用一個二維數組代替,如果染了色就大於0,未染色的為0,最後統計數組中不為0的數目即解決。
 1 #include<iostream> 2 using namespace std; 3 void input(int x1, int y1, int x2, int y2,int a[100][100])    //給數組賦值(染色) 4 { 5     for (int i = x1; i < x2; i++) 6     { 7         for (int j = y1; j < y2; j++) 8             a[i][j]++; 9     }10 }11 12 int main()13 {14     static int a[100][100];15     int n, x1, y1, x2, y2;16     cin >> n;17     for (int i = 0; i < n; i++)18     {19         cin >> x1 >> y1 >> x2 >> y2;20         input(x1, y1, x2, y2, a);21     }22     n = 0;23     //檢索不為0的數目24     for (int i = 0; i < 100; i++)25     {26         for (int j = 0; j < 100; j++)27         {28             if (a[i][j] != 0)29                 n++;30         }31     }32     cout << n << endl;33     system("pause");34     return 0;35 }

 


趣味問題:畫圖(c++實現)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.