Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- vector<vector<int>> candyCrush(vector<vector<int>>& board) {
- int rows = board.size(), cols = board[0].size();
- bool no_stable = false;
- for (int i = 0; i < rows; i++)
- {
- for (int j = 0; j + 2 < cols; j++)
- {
- int &v1 = board[i][j];
- int &v2 = board[i][j+1];
- int &v3 = board[i][j+2];
- int v0 = abs(v1);
- if (v0 && v0 == abs(v2) && v0 == abs(v3))
- {
- v1 = v2 = v3 = - v0;
- no_stable = true;
- }
- }
- }
- for (int i = 0; i + 2 < rows; i++)
- {
- for (int j = 0; j < cols; j++)
- {
- int &v1 = board[i][j];
- int &v2 = board[i+1][j];
- int &v3 = board[i+2][j];
- int v0 = std::abs(v1);
- if (v0 && v0 == abs(v2) && v0 == abs(v3))
- {
- v1 = v2 = v3 = -v0;
- no_stable = true;
- }
- }
- }
- for (int j = 0; j < cols; j++)
- {
- int fall = rows - 1;
- for (int i = rows - 1; i >= 0; i--)
- {
- if (board[i][j] >= 0)
- {
- board[fall--][j] = board[i][j];
- }
- }
- for (int i = fall; i >= 0; i--)
- {
- board[i][j] = 0;
- }
- }
- return no_stable ? candyCrush(board) : board;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement