标签:amp size src lan solution tor tin http return
给定一个长为n的数组A(n<5*10^5),A[i] (取值范围从 0 到 3)表示在点 i 处的 A[i] 跑道上有一个障碍。如果 A[i] == 0 ,那么点 i 处没有障碍。任何一个点的三条跑道中 最多有一个 障碍。求这只青蛙从点 0 处跑道 2 出发,并想到达点 n 处的 任一跑道 ,请你返回 最少侧跳次数 。
const int N = 5e5+5, inf = 0x3f3f3f3f;
class Solution {
public:
int f[N][4];
int minSideJumps(vector<int>& A) {
int n = A.size();
memset(f, inf, sizeof f);
f[1][1] = f[1][3] = 1, f[1][2] = 0;
for (int i=2; i<=n; i++) {
int id = A[i-1];
for (int j=1; j<=3; j++) {
if (id == j) continue; //j这个位置不能走
for (int k=1; k<=3; k++) {
if (k == id) continue; //k这个位置不能走
if (k == j) f[i][j] = min(f[i][j], f[i-1][k]);
else f[i][j] = min(f[i][j], f[i-1][k]+1);
}
}
}
return min({f[n][1], f[n][2], f[n][3]});
}
};
标签:amp size src lan solution tor tin http return
原文地址:https://www.cnblogs.com/wdt1/p/14643427.html