GastonFontenla

Floodfill

May 26th, 2018
237
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.06 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3.  
  4. using namespace std;
  5.  
  6. vector <vector <char> > m;
  7. vector <vector <bool> > visitado;
  8.  
  9. int ancho, alto;
  10. int x[] = {1, 0, -1, 0};
  11. int y[] = {0, 1, 0, -1};
  12.  
  13. bool esValido(int a, int b) ///checkea si la posición es una celda de la matriz
  14. {
  15.     return (0 <= a && a < alto && 0 <= b && b < ancho);
  16. }
  17.  
  18. void floodfill(int a, int b)
  19. {
  20.     visitado[a][b] = true; ///importante marcar como visitado
  21.  
  22.     for(int i=0; i<4; i++)
  23.     {
  24.         int a2 = a+x[i];
  25.         int b2 = b+y[i];
  26.         ///a2,b2 es una celda vecina de a,b
  27.         if(esValido(a2, b2) && visitado[a2][b2] == false && m[a2][b2] == '_')
  28.             floodfill(a2, b2);
  29.     }
  30. }
  31.  
  32. int main()
  33. {
  34.     cin >> alto >> ancho;
  35.     m = vector <vector <char> > (alto, vector <char> (ancho));
  36.     visitado = vector <vector <bool> > (alto, vector <bool> (ancho, false));
  37.  
  38.     for(int i=0; i<alto; i++)
  39.         for(int j=0; j<ancho; j++)
  40.             cin >> m[i][j];
  41.  
  42.     floodfill(2, 3);
  43.  
  44.     ///Hago algo para resolver el problema, blablabla
  45.  
  46.     return 0;
  47. }
Advertisement
Add Comment
Please, Sign In to add comment