题意:
1. Vasya放假了,然后他的假期的每一天有四种情况
0代表:体育馆关门,并且没有比赛(什么都没有,只能休息了)
1代表:体育馆关门,但有比赛(可以打比赛,也可以休息)
2代表:体育馆开门,但没有比赛(可以体育活动,也可以休息)
3代表:体育馆开门,并且有比赛(可以体育活动,可以比赛,可以休息)
2. 要求Vasya的暑假尽可能少休息,求休息的天数
3. 每天只能做一件事,三选一,即不能比赛的同时去体育活动……
题解:
1. 情况3的时候,尽可能不休息
2. 情况1/2的时候,要看昨天的安排
3. 我代码里采用立足今天,判断明天,并对明天的情况进行更换的思路。那么今天就不会出现情况3
4. 最后一天要单独判断是否休息,因为循环里并不执行到最后一天
以下是我的AC代码:
#include <iostream>
using namespace std;
int a[105];
int main()
{
int n,i,sum=0;
cin >> n;
for(i=0; i<n; i++)
cin >> a[i];
for(i=0;i<n-1;i++)
{
if(a[i]==0)
sum++;
else if(a[i]==1)
{
if(a[i+1]==1)
a[i+1]=0;
else if(a[i+1]==3)
a[i+1]=2;
}
else if(a[i]==2)
{
if(a[i+1]==2)
a[i+1]=0;
else if(a[i+1]==3)
a[i+1]=1;
}
}
if(a[i]==0)
sum++;
cout << sum << endl;
return 0;
}