题解 P4439 【[COCI2017-2018#3] Aron】

· · 题解

【题目大意】

Aron给他的朋友们买礼物后在礼物店排队,它的前面有n个人,但是它发现有些人实在等待他的朋友而并非在排队买单,并且我们可以认为站在一个人后面的朋友都穿着匹配颜色的衬衫,而两个相邻的群体、相邻的个人或相邻的个人和一个集体将永远不会穿着相同颜色的衬衫。

编写一个程序,给定排队的人所穿的衣服的颜色,输出Aron在第多少位?

【算法介绍】

我们从第一个人枚举开始,如果他的衣服的颜色和前一个人相同,则跳至他的后一个人,否则,将答案数+1。最后在输出答案的时候再加上Aron自身即可。

【代码】

#include <bits/stdc++.h>
using namespace std;

int main(){
    int i,j,k,m,n,ans=0;
    char s,r='+';
    scanf("%d",&n);
    for(i=1;i<=n;i=-~i){
        cin>>s;
        if(s==r)
            continue;
        else{
            r=s;
            ans++;
        }
    }
    printf("%d",ans+1);
    return 0;
}