201512-3-畫圖

來源:互聯網
上載者:User

標籤:輸出   地區   ios   names   col   iostream   void   之間   char   

問題描述  在一個定義了直角座標系的紙上,畫一個(x1,y1)到(x2,y2)的矩形指將橫座標範圍從x1到x2,縱座標範圍從y1到y2之間的地區塗上顏色。   給出了一個畫了兩個矩形的例子。第一個矩形是(1,1) 到(4, 4),用綠色和紫色表示。第二個矩形是(2, 3)到(6, 5),用藍色和紫色表示。圖中,一共有15個單位的面積被塗上顏色,其中紫色部分被塗了兩次,但在計算面積時只計算一次。在實際的塗色過程中,所有的矩形都塗成統一的顏色,圖中顯示不同顏色僅為說明方便。    給出所有要畫的矩形,請問總共有多少個單位的面積被塗上顏色。輸入格式  輸入的第一行包含一個整數n,表示要畫的矩形的個數。        接下來n行,每行4個非負整數,分別表示要畫的矩形的左下角的橫座標與縱座標,以及右上方的橫座標與縱座標。輸出格式  輸出一個整數,表示有多少個單位的面積被塗上顏色。範例輸入2 1 1 4 4 2 3 6 5範例輸出15評測用例規模與約定  1<=n<=100,0<=橫座標、縱座標<=100。 
#include<iostream>#include<cstring>using namespace std;char a[101][101];int n,m;void init(){    int i,j;    for(i=0;i<=101;i++){        for(j=0;j<=101;j++){            a[i][j]=‘.‘;        }    }}void line(int e,int b,int c,int d){    int x1=100-b;    int y1=e;    int x2=100-d;    int y2=c;    int i;     if(x1==x2){        if(y1>y2) {            int temp=y1;            y1=y2;            y2=temp;        }        for(i=y1;i<=y2;i++){            if(a[x1][i]==‘-‘){                a[x1][i]=‘+‘;            }            else {                a[x1][i]=‘|‘;            }        }    }    else {        if(x1>x2){            int temp=x1;            x1=x2;            x2=temp;        }        for(i=x1;i<=x2;i++){            if(a[i][y1]==‘|‘){                a[i][y1]=‘+‘;            }            else {                a[i][y1]=‘-‘;            }        }    }}void in(int e,int b,char c){    int x=100-b;    int y=e;    int i;    a[x][y]=c;    if(x!=0){    for(i=x;i>=0;i--){        if(a[i][y]==‘-‘ || a[i][y]==‘+‘ || a[i][y]==‘|‘) break;        a[i][y]=c;    }}    if(x!=n-1){    for(i=x;i<n;i++){        if(a[i][y]==‘-‘ || a[i][y]==‘+‘ || a[i][y]==‘|‘) break;        a[i][y]=c;    }}    if(y!=0){    for(i=y;i>=0;i--){        if(a[x][i]==‘-‘ || a[x][i]==‘+‘ || a[x][i]==‘|‘) break;        a[x][i]=c;    }}    if(y!=m-1){    for(i=y;i<m;i++){        if(a[x][i]==‘-‘ || a[x][i]==‘+‘ || a[x][i]==‘|‘) break;        a[x][i]=c;    }}}int main(){    int q,i,p,j;    init();    cin>>m>>n>>q;    while(q-->0){        cin>>p;        if(p==1){                int e,b;                char c;                cin>>e>>b>>c;                in(e,b,c);                break;            }        else{                int e,b,c,d;                cin>>e>>b>>c>>d;                line(e,b,c,d);                break;            }        }    for(i=100;i>100-n;i--){        for(j=0;j<m;j++){            cout<<a[i][j];        }        cout<<endl;    }    return 0;}

 

201512-3-畫圖

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.