麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

201409-2

2019-11-11 05:47:16
字體:
來源:轉載
供稿:網友
問題描述

試題編號:201409-2
試題名稱:畫圖
時間限制:1.0s
內存限制:256.0MB
問題描述:問題描述  在一個定義了直角坐標系的紙上,畫一個(x1,y1)到(x2,y2)的矩形指將橫坐標范圍從x1到x2,縱坐標范圍從y1到y2之間的區域涂上顏色。  下圖給出了一個畫了兩個矩形的例子。第一個矩形是(1,1) 到(4, 4),用綠色和紫色表示。第二個矩形是(2, 3)到(6, 5),用藍色和紫色表示。圖中,一共有15個單位的面積被涂上顏色,其中紫色部分被涂了兩次,但在計算面積時只計算一次。在實際的涂色過程中,所有的矩形都涂成統一的顏色,圖中顯示不同顏色僅為說明方便。  給出所有要畫的矩形,請問總共有多少個單位的面積被涂上顏色。輸入格式  輸入的第一行包含一個整數n,表示要畫的矩形的個數。  接下來n行,每行4個非負整數,分別表示要畫的矩形的左下角的橫坐標與縱坐標,以及右上角的橫坐標與縱坐標。輸出格式  輸出一個整數,表示有多少個單位的面積被涂上顏色。樣例輸入21 1 4 42 3 6 5樣例輸出15評測用例規模與約定  1<=n<=100,0<=橫坐標、縱坐標<=100。
問題分析:問題的關鍵是如何把多個矩形的重疊部分去除。多個矩形可能在一個部分產生多次重疊,因此對于每一個一個單位進行標記其是否被涂刷過并累計。

代碼:

#include <iostream>using namespace std;/* run this PRogram using the console pauser or add your own getch, system("pause") or input loop */bool paint[101][101];//畫布 記錄每一個單位是否被涂刷過  struct Rectangle{int x1,x2,y1,y2;};Rectangle r[101];int n;int ans=0;int main(int argc, char *argv[]) {while(cin>>n){//1.輸入n個矩形 for(int i=0;i<n;i++){cin>>r[i].x1>>r[i].y1>>r[i].x2>>r[i].y2;}//初始化畫布矩陣 for(int i=0;i<101;i++){for(int j=0;j<101;j++){paint[i][j]=false;}} //2. 遍歷并記錄所有矩形 for(int i=0;i<n;i++){//累加每一個矩形的面積  重疊部分只加一次for(int m=r[i].x1;m<r[i].x2;m++){for(int n=r[i].y1;n<r[i].y2;n++){if(paint[m][n] == false){//沒有發生重疊ans++;paint[m][n]=true;}}}}//3.輸出結果 cout<<ans; }return 0;}/*由題目1<=n<=100,0<=橫坐標、縱坐標<=100。可知時間復雜度為100*100+n+n*n*n=n^3 因為 1<=n<=100 所以復雜度為1000,000沒有超過百萬所以不會超過1s的時間限制 */

代碼分析:

這里采用了最笨的辦法,即對于每一個矩形的每一個單位一一進行累加,因此時間復雜度較高。

代碼優化:

可以把總和用公式求出來,然后再根據是否重疊來較少,這樣就減少了++的運算。

參考代碼:  

     (參考文章地址:http://blog.csdn.net/tigerisland45/article/details/54773758)

 for(int i=1; i<=n; i++) {          // 輸入數據          cin >> x1 >> y1 >> x2 >> y2;            // 累加面積          sum += (x2 - x1) * (y2 - y1);            // 標記和去除重疊部分          for(int i=x1; i<x2; i++)              for(int j=y1; j<y2; j++) {                  if(flag[i][j])                      sum--;                  flag[i][j] = true;              }   


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 凹凸成人精品亚洲精品密奴 | 精品一区二区在线播放 | 国产精品视频专区 | 福利在线免费视频 | 天天干导航 | av在线免费观看网址 | 午夜国产成人 | 久久在线 | 免费a级毛片大学生免费观看 | 久久网页 | 福利在线免费视频 | 久久久久av69精品 | 久久久久久久久久久一区 | 精品一区二区三区在线观看视频 | 国产乱子视频 | 国产高清美女一级毛片久久 | 成年免费看 | 成人在线视频精品 | 国产精品久久久久久久av三级 | 一级爱片| 成人毛片视频在线观看 | 99亚洲视频 | 欧美性受xxxx白人性爽 | 777sesese| 久色porn| 亚洲人成在线播放网站 | 视频一区 日韩 | 午夜视频观看 | japanese javhd | 国产午夜精品久久久久久免费视 | 国产成年人在线观看 | 污视频在线看 | 精品中文字幕久久久久四十五十骆 | 国产精品午夜未成人免费观看 | 一级黄色淫片 | 九九热九九爱 | 精品国产视频一区二区三区 | 香蕉视频破解 | 狠狠久久伊人中文字幕 | 国产噜噜噜 | 国产精品久久久久久久久久大牛 |