显然是一个贪心的思路,但是分类统计略显繁琐,可以借助set统计种类,multiset统计个数。
#include <bits/stdc++.h> 
using namespace std;

int main()
{
    int n;cin>>n;
    int x,sum=0;
    vector<int> a(n+1,0);
    for(int i=1;i<=n;i++)
    {
        int x;cin>>x;
        a[i]=x;
    }
    int cnt=0;
    for(int i=1;i<=n-3;i++)
    {
        multiset<int> st1;
        set<int> st2;
        for(int j=0;j<=3;j++)
        {
            st1.emplace(a[i+j]);
            st2.emplace(a[i+j]);
        }
        if(st2.size()==2){//两种数字
            if(st1.count(a[i])==1||st1.count(a[i])==3){//其中一种数字个数确定,另一种也确定。
                cnt++;
                i+=3;
            }
        }
    }
    cout<<cnt;
}