• ccf 201512-3 画图(90)


    ccf 201512-3 画图(90)

     1 #include<iostream>
     2 #include<cstring>
     3 #include<algorithm>
     4 using namespace std;
     5 const int maxn = 100+5;//最大的行数 ,列数 
     6 char square[maxn][maxn];
     7 bool visit[maxn][maxn];
     8 int m,n,q;//m为列数,n为行数 
     9 const int dr[] = {-1,0,1,0};//上,左,下,右 
    10 const int dc[] = {0,-1,0,1};
    11 bool inside(int x,int y)
    12 {
    13     return x>=0 && x<n && y>=0 && y<m; 
    14 }
    15 void paintLine()
    16 {
    17     int x0,y0,x1,y1;
    18     cin>>x0>>y0>>x1>>y1;
    19     if(y0==y1)//画 -  ,需要注意向右为x方向 
    20     {
    21         for(int i=min(x0,x1);i<=max(x0,x1);i++)
    22         {
    23             if(square[y0][i] == '|')  square[y0][i] = '+';
    24             else square[y0][i] = '-';
    25         }
    26      } 
    27      else if(x0 == x1)//画| 。需要注意向左为y方向 
    28      {
    29          for(int i=min(y0,y1);i<=max(y0,y1);i++)
    30         {
    31             if(square[i][x0] == '-') square[i][x0] = '+';
    32             else square[i][x0] = '|';
    33         }
    34      }
    35 }
    36 
    37 void paintChar(int x,int y,char c)
    38 {///使用dfs 
    39     if(square[x][y] == '|' || square[x][y] == '-' || square[x][y] == '+')
    40     {
    41         return;
    42     }
    43     square[x][y] = c;
    44     visit[x][y] = 1;
    45     for(int i=0;i<=3;i++)
    46     {
    47         if(inside(x+dr[i],y+dc[i]) && !visit[x+dr[i]][y+dc[i]])
    48             paintChar(x+dr[i],y+dc[i],c);
    49     }
    50 }
    51 
    52 int main()
    53 {
    54     cin>>m>>n>>q;
    55     memset(square,'.',sizeof(square)); 
    56     for(int i=0;i<q;i++)
    57     {
    58         int type;cin>>type;
    59         if(type == 0)//画线
    60             paintLine();
    61         else //使用dfs进行填充
    62         {
    63             memset(visit,0,sizeof(visit));
    64             int x,y;char c;
    65             cin>>x>>y>>c;
    66             paintChar(y,x,c); 
    67          } 
    68     }
    69     
    70     ///进行输出
    71     for(int i=n-1;i>=0;i--)
    72     {
    73         for(int j=0;j<m;j++)
    74             cout<<square[i][j];
    75         cout<<endl;
    76     }
    77     
    78     return 0;
    79  } 

  • 相关阅读:
    radio checkbox select
    easyui_tree
    MySQL编码问题
    Django shell调试
    encode,decode
    结束进程
    Django models 字段
    re
    (转)为Ubuntu安装翻译词典(星际译王)
    python3进阶之正则表达式之基本概念
  • 原文地址:https://www.cnblogs.com/yxh-amysear/p/8570000.html
Copyright © 2020-2023  润新知