Simple Round I | B. 魔法照相馆题解

· · 题解

一开始写了个 70 多行分讨,找了好久没找到错误,但是 60 分。

但是好像不用那么麻烦。

直接用三个布尔类型的变量模拟这三个幕布即可。

对于客人需求的幕布,判断这个幕布是否拉下,如果否,则计数器加 1,拉下这个颜色的幕布。

然后根据颜色判断位置,判断这个幕布图层之上的幕布是否拉上,如果没拉上,改没拉上的幕布的状态,计数器加 1

代码仅供参考,讲的和写的有点细微的差别,讲的思路应该比写的更简单点。

#include<bits/stdc++.h>
using namespace std;
string s;
int ans,n;
bool a[3];//w b r
int main(){ 
    a[0]=1,a[1]=1,a[2]=1;
    cin>>n;
    cin>>s;
    for(int i=0;i<s.size();i++){
        if(s[i]=='W'){
            if(!a[0]){
                ans++;
                a[0]=!a[0];
            }
        }else if(s[i]=='B'){
            if(a[0]){
                ans++;
                a[0]=!a[0];
            }
            if(!a[1]){
                ans++;
                a[1]=!a[1];
            }
        }else{
            if(a[0]){
                ans++;
                a[0]=!a[0];
            }
            if(a[1]){
                ans++;
                a[1]=!a[1];
            }
            if(!a[2]){
                ans++;
                a[2]=!a[2];
            }
        }
    }
    cout<<ans<<endl;
    return 0;
}