GitBook

这里写图片描述

需要注意问的是至少休息多少天 所以要让a[i]==0的天数尽量少

从前到后 如果a[i]==3 那么如果a[i-1]==1 那a[i]=2 如果a[i-1]==2 那a[i]=1

如果在循环开始就有3的话则不用考虑 因为无论3有多少个都可以组合成有事天数 对结果没有影响

如果a[i]==a[i-1] 那么把a[i]更新为0

#include<stdio.h>
int a[120];
int main() {
	int n;
	while(scanf("%d",&n)!=EOF) {
		for(int i=0; i<n; i++) {
			scanf("%d",&a[i]);
			if(i>0&&a[i]==3&&(a[i-1]==1||a[i-1]==2))
				a[i]-=a[i-1];
			else if(i>0&&a[i]!=3&&a[i]==a[i-1])
				a[i]=0;
		}
		int cnt=0;
		for(int i=0; i<n; i++)
			if(a[i]==0)
				cnt++;
		printf("%d\n",cnt);
	}
	return 0;
}

题目地址:【CodeForces】[698A]Vacations