f[i][0..2]表示第i天休息|运动|比赛最少的休息天数。
#include <cstdio>
#include <cstring>
#include <algorithm>
#define N 105
using namespace std;
int n,a,f[N][3],ans;
int main(){
memset(f,0x3f3f3f3f,sizeof f);
f[0][0]=0;
scanf("%d",&n);
for(int i=1;i<=n;i++){
scanf("%d",&a);
f[i][0]=min(f[i-1][0],min(f[i-1][1],f[i-1][2]))+1;
if(a&&a!=2)f[i][1]=min(f[i-1][0],f[i-1][2]);
if(a>1)f[i][2]=min(f[i-1][0],f[i-1][1]);
}
printf("%d",min(min(f[n][0],f[n][1]),f[n][2]));
}