【题目描述】
中山漫画馆是很多小朋友喜欢去游玩的地方,为了方便统计游客的数量,在漫画馆的出入口设置了一些装置用来记录游客进出的情况。某天漫画馆关门的时候用来统计游客数据的机器突然坏了,现在只知道整天出入漫画馆的情况,由一串I和O的代码来表示,I表示有一个人进入漫画馆,O表示一个人离开漫画馆。馆长希望知道这天最多有多少个游客同时在馆里面参观,你能帮助馆长解决这个问题吗?
【输入格式】
一行一个字符串,全都有O和I这两组字符组成。
【输出格式】
最多在馆的人数。
【输入样例】
IIIOOIIOIOOO
【输出样例】
3
【数据范围】
对于50%的数据,字符串长度小于200
对于100%的数据,字符串长度小于10000
保证在馆人数不会出现负数。
#include<bits/stdc++.h>
using namespace std;
int main()
{
/* ————输入一个字符串,从头开始循环读取。如果当前这一位是I,则s++,是O则s--。
定义一个记录最大在馆人数的变量,清零。每循环一次就判断,
如果s>这个变量就把s的值付给这个变量。最后输出最大在馆人数。
IIOII
S :12123
maxn:12223
3
*/
freopen("access.in","r",stdin);
freopen("access.out","w",stdout);
string a;//查一下C++的字符串
int s=0,maxn=0; //判断是否大于负一 -------赋值为0也可以判断
cin>>a;
for(int i=0;i<a.size();i++)
{
if(a[i]=='I') s++;
if(a[i]=='O') s--;
if(s>maxn) //是否大于-1 然后往后maxn会赋值, -------赋值为0也可以判断
maxn=s;
}
if(maxn>0)
{
cout<<maxn;
}
else //等0也是人数负数,因为不可能空管还能少人的,最少要1个人
{
cout<<"在馆人数出现负数";
}
return 0;
}