3
int func(int i, int l, vector<int> &obstacles, vector<vector<int>> &dp) {4
if (i == obstacles.size() - 2) {5
if (obstacles[i + 1] == l) return 1;9
if (dp[i][l] != -1) return dp[i][l];11
if (obstacles[i + 1] != l) {12
return dp[i][l] = func(i + 1, l, obstacles, dp);16
for (int j = 1; j <= 3; j++) {18
if (obstacles[i] == j) continue;19
b = min(b, 1 + func(i, j, obstacles, dp));25
int minSideJumps(vector<int> &obstacles) {26
int n = obstacles.size();27
vector<vector<int>> dp(n, vector<int>(4, -1));28
return func(0, 2, obstacles, dp);