解题思路:直接判断每一天的情况,能不休息尽量不让他休息,分情况讨论一下~
#include <iostream>
//
using namespace std;
int a[105];
int ans;
int main()
{
int n,i;
cin>>n;
for(i=1;i<=n;i++)
cin>>a[i];
for(i=1;i<n;i++)
{
switch(a[i])
{
case 0:{ans++;break;}
case 1:
{
if(a[i+1]==1)
a[i+1] = 0;//两天任务一样,就强制休息一天
if(a[i+1]==3)
a[i+1] = 2;//为了让下一天不休息,就第二天只能做别的任务
break;
}
case 2:
{
if(a[i+1]==2)
a[i+1] = 0;
if(a[i+1]==3)
a[i+1] = 1;
break;
}
case 3:
{
break;
}
}
}
if(a[i]==0)
ans++;
cout << ans <<endl;
//cout << "Hello world!" << endl;
return 0;
}