UVa 10267 Graphical Editor

P.S. Very tricky problem
  1  #include <stdio.h>
  2  #include <stdlib.h>
  3  #include <algorithm>
  4  #include <iostream>
  5  #include <string.h>
  6  using namespace std;
  7  char arr[255][255];
  8  bool vis[255][255];
  9  int m,n;
 10  void dfs(int x,int y,char c,char oc)
 11  {
 12      if(x>0 && arr[x-1][y]==oc && !vis[x-1][y])
 13      {
 14          vis[x-1][y]=true;
 15          arr[x-1][y]=c;
 16          dfs(x-1,y,c,oc);
 17      }
 18      if(y>0 && arr[x][y-1]==oc && !vis[x][y-1])
 19      {
 20          vis[x][y-1]=true;
 21          arr[x][y-1]=c;
 22          dfs(x,y-1,c,oc);
 23      }
 24      if(x<n-1 && arr[x+1][y]==oc && !vis[x+1][y])
 25      {
 26          vis[x+1][y]=true;
 27          arr[x+1][y]=c;
 28          dfs(x+1,y,c,oc);
 29      }
 30      if(y<m-1 && arr[x][y+1]==oc && !vis[x][y+1])
 31      {
 32 
 33          vis[x][y+1]=true;
 34          arr[x][y+1]=c;
 35          dfs(x,y+1,c,oc);
 36      }
 37  }
 38  int main()
 39  {
 40      char ch=' ';
 41      while(cin>>ch && ch!='X')
 42      {
 43          if(ch=='I')
 44          {
 45              cin>>m>>n;
 46              for(int i=0; i<250; i++)
 47              {
 48                  for(int j=0; j<250; j++)
 49                  {
 50                      arr[i][j]='O';
 51                  }
 52              }
 53          }
 54          else if(ch=='C')
 55          {
 56              for(int i=0; i<250; i++)
 57              {
 58                  for(int j=0; j<250; j++)
 59                  {
 60                      arr[i][j]='O';
 61                  }
 62              }
 63          }
 64          else if(ch=='L')
 65          {
 66              int x,y;
 67              char c;
 68              cin>>x>>y>>c;
 69              arr[y-1][x-1]=c;
 70          }
 71          else if(ch=='V')
 72          {
 73              int x,y1,y2;
 74              char c;
 75              cin>>x>>y1>>y2>>c;
 76              if(y1>y2)
 77              {
 78                  int tmp=y2;
 79                  y2=y1;
 80                  y1=tmp;
 81              }
 82              for(int i=y1-1; i<=y2-1; i++)
 83              {
 84                  arr[i][x-1]=c;
 85              }
 86          }
 87          else if(ch=='H')
 88          {
 89              int y,x1,x2;
 90              char c;
 91              cin>>x1>>x2>>y>>c;
 92              if(x1>x2)
 93              {
 94                  int tmp=x2;
 95                  x2=x1;
 96                  x1=tmp;
 97              }
 98              for(int i=x1-1; i<=x2-1; i++)
 99              {
100                  arr[y-1][i]=c;
101              }
102 
103          }
104          else if(ch=='K')
105          {
106              int x1,y1,x2,y2;
107              char c;
108              cin>>x1>>y1>>x2>>y2>>c;
109              if(y1>y2)
110              {
111                  int tmp=y2;
112                  y2=y1;
113                  y1=tmp;
114              }
115              if(x1>x2)
116              {
117                  int tmp=x2;
118                  x2=x1;
119                  x1=tmp;
120              }
121              for(int i=y1-1; i<=y2-1; i++)
122              {
123                  for(int j=x1-1; j<=x2-1; j++)
124                  {
125                      arr[i][j]=c;
126                  }
127              }
128          }
129          else if(ch=='F')
130          {
131              memset(vis,false,sizeof(vis));
132              int x,y;
133              char c,oc;
134              cin>>x>>y>>c;
135              oc=arr[y-1][x-1];
136              vis[y-1][x-1]=true;
137              arr[y-1][x-1]=c;
138              if(c!=oc )
139                  dfs(y-1,x-1,c,oc);
140          }
141          else if(ch=='S')
142          {
143              string name;
144              cin>>name;
145              cout<<name<<endl;
146              for(int i=0; i<n; i++)
147              {
148                  for(int j=0; j<m; j++)
149                  {
150                      cout<<arr[i][j];
151                  }
152                  cout<<endl;
153              }
154          }
155          else
156          {
157              string line;
158              getline(cin,line);
159          }
160      }
161      return 0;

162  }

留言

這個網誌中的熱門文章

Things a Little Bird Told Me: Confessions of the Creative Mind

UVa 12970 Alcoholic Pilots

UVa 483 Word Scramble