简单dp~~
#include <bits/stdc++.h> using namespace std; #define pb push_back #define mp make_pair #define fi first #define se second #define mp make_pair #define lson l, m, rt<<1 #define rson m+1, r, rt<<1|1 typedef long long LL; typedef unsigned long long ULL; typedef pair<int, int> PII; const double eps=1e-5; const double pi=acos(-1.0); const int mod=1e9+7; const int INF=0x3f3f3f3f; const int MAXN=100000+10; const int MAXM=1000000+10; int a[1010]; int dp[1010][3]; int main() { int n; scanf("%d",&n); for(int i=1; i<=n; ++i) { scanf("%d",a+i); } for(int i=1; i<=n; ++i) { dp[i][0]=min(dp[i-1][0],min(dp[i-1][1],dp[i-1][2]))+1; if(a[i]==1 || a[i]==3) { dp[i][1]=min(dp[i-1][0],dp[i-1][2]); } else { dp[i][1]=INF; } if(a[i]==2 || a[i]==3) { dp[i][2]=min(dp[i-1][0],dp[i-1][1]); } else { dp[i][2]=INF; } } cout<<min(dp[n][0],min(dp[n][1],dp[n][2]))<<endl; return 0; }
- 版权声明:本文基于《知识共享署名-相同方式共享 3.0 中国大陆许可协议》发布,转载请遵循本协议
- 文章链接:http://www.carlstedt.cn/archives/1057 (转载时请注明本文出处及文章链接)
发表评论
快来吐槽一下吧!