【CodeForces】[698A]Vacations

这里写图片描述

需要注意问的是至少休息多少天
所以要让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
",cnt);
    }
    return 0;
}

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

原文地址:https://www.cnblogs.com/BoilTask/p/12569493.html