GastonFontenla

N2P1 - Plastetris (solución 1)

Sep 1st, 2019
244
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.31 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. int cantX;
  6. int dx[] = {1, 0, -1, 0};
  7. int dy[] = {0, 1, 0, -1};
  8. bool visit[4][4];
  9.  
  10. bool esValido(int x, int y)
  11. {
  12.     return 0 <= x && x < 4 && 0 <= y && y < 4;
  13. }
  14.  
  15. void floodfill(int x, int y, const vector <string> &cajita)
  16. {
  17.     visit[x][y] = true;
  18.     cantX++;
  19.  
  20.     for(int i=0; i<4; i++)
  21.     {
  22.         int x2 = x+dx[i];
  23.         int y2 = y+dy[i];
  24.         if(esValido(x2, y2) && visit[x2][y2] == false && cajita[x2][y2] == 'X')
  25.         {
  26.             floodfill(x2, y2, cajita);
  27.         }
  28.     }
  29. }
  30.  
  31. string plastetris(vector <string> cajita)
  32. {
  33.     int componentes = 0;
  34.     for(int i=0; i<4; i++)
  35.     {
  36.         for(int j=0; j<4; j++)
  37.         {
  38.             /**
  39.             Si la celda actual es una x
  40.             Y no fue visitada antes
  41.             **/
  42.             if(cajita[i][j] == 'X' && visit[i][j] == false)
  43.             {
  44.                 componentes++;
  45.                 cantX = 0;
  46.                 floodfill(i, j, cajita);
  47.             }
  48.         }
  49.     }
  50.  
  51.     if(componentes == 1 && cantX == 4)
  52.         return "SI";
  53.     return "NO";
  54. }
  55.  
  56. /**
  57. //Función main auxiliar para testear
  58. int main()
  59. {
  60.     vector <string> cajita(4);
  61.     for(int i=0; i<4; i++)
  62.         cin >> cajita[i];
  63.  
  64.     cout << plastetris(cajita) << endl;
  65.  
  66.     return 0;
  67. }**/
Advertisement
Add Comment
Please, Sign In to add comment