Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Solution {
- public:
- int minSideJumps(vector<int>& obstacles) {
- int n = obstacles.size();
- int dp[n+2][4];
- dp[0][1] = dp[0][3] = 1;
- dp[0][2] = 0;
- for(int i=1; i<n; i++){
- int x = obstacles[i];
- for(int j=1; j<=3; j++){
- if(x == j){
- dp[i][j] = INT_MAX-5;
- continue;
- }
- dp[i][j] = dp[i-1][j];
- if(j == 1){
- int a, b, c;
- a = dp[i][j];
- b = (obstacles[i-1] == j && obstacles[i] == 2) ? dp[i-1][2]+2 : dp[i-1][2]+1;
- c = (obstacles[i-1] == j && obstacles[i] == 3) ? dp[i-1][3]+2 : dp[i-1][3]+1;
- dp[i][j] = min(a, min(b, c));
- }
- else if(j == 2){
- int a, b, c;
- b = dp[i][j];
- a = (obstacles[i-1]==j && obstacles[i]==1) ? dp[i-1][1]+2 : dp[i-1][1]+1;
- c = (obstacles[i-1]==j && obstacles[i]==3) ? dp[i-1][3]+2 : dp[i-1][3]+1;
- dp[i][j] = min(a, min(b, c));
- }
- else if(j == 3){
- int a, b, c;
- c = dp[i][j];
- a = (obstacles[i-1]==j && obstacles[i]==1) ? dp[i-1][1]+2 : dp[i-1][1]+1;
- b = (obstacles[i-1]==j && obstacles[i]==2) ? dp[i-1][2]+2 : dp[i-1][2]+1;
- dp[i][j] = min(a, min(b, c));
- }
- }
- }
- return min(dp[n-1][1], min(dp[n-1][2], dp[n-1][3]));
- }
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement