Advertisement
SalmaYasser

Candy Crush

Dec 18th, 2019
141
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.66 KB | None | 0 0
  1. vector<vector<int>> candyCrush(vector<vector<int>>& board) {
  2.  
  3. int rows = board.size(), cols = board[0].size();
  4. bool no_stable = false;
  5.  
  6. for (int i = 0; i < rows; i++)
  7. {
  8. for (int j = 0; j + 2 < cols; j++)
  9. {
  10. int &v1 = board[i][j];
  11. int &v2 = board[i][j+1];
  12. int &v3 = board[i][j+2];
  13.  
  14. int v0 = abs(v1);
  15.  
  16. if (v0 && v0 == abs(v2) && v0 == abs(v3))
  17. {
  18. v1 = v2 = v3 = - v0;
  19. no_stable = true;
  20. }
  21. }
  22. }
  23.  
  24. for (int i = 0; i + 2 < rows; i++)
  25. {
  26. for (int j = 0; j < cols; j++)
  27. {
  28. int &v1 = board[i][j];
  29. int &v2 = board[i+1][j];
  30. int &v3 = board[i+2][j];
  31. int v0 = std::abs(v1);
  32. if (v0 && v0 == abs(v2) && v0 == abs(v3))
  33. {
  34. v1 = v2 = v3 = -v0;
  35. no_stable = true;
  36. }
  37. }
  38. }
  39.  
  40. for (int j = 0; j < cols; j++)
  41. {
  42. int fall = rows - 1;
  43. for (int i = rows - 1; i >= 0; i--)
  44. {
  45. if (board[i][j] >= 0)
  46. {
  47. board[fall--][j] = board[i][j];
  48. }
  49. }
  50.  
  51. for (int i = fall; i >= 0; i--)
  52. {
  53. board[i][j] = 0;
  54. }
  55. }
  56.  
  57. return no_stable ? candyCrush(board) : board;
  58. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement