1333 明信片和照片
1333 明信片和照片
题目描述
Zero有很多明信片和照片一条线挂在墙上。他决定把它们放进衣柜,把墙空出来挂上五月天的海报。Zero必须把所有的明信片和照片放进衣柜,他不能跳过某一张明信片或照片而直接去拿下一张,他不喜欢同时拿明信片和照片,他一次最多能拿5样东西。请帮他计算一下要搬运的最少次数吧。
输入要求
输入只包含“C”和“P”的字符串,最长为100。C代表明信片,P代表照片。字符串第i个字符表示第i个对象,顺序为从左到右。
输出要求
搬运的最少次数
测试数据
//输入
CPCPCPC
CCCCCCPPPPPP
CCCCCCPPCPPPPPPPPPP
//输出
7
4
6
AC代码
我觉的我写的有问题,但还是ac了,所以我得记录下,可能是我逻辑没想通
#include <bits/stdc++.h>
using namespace std;
int main() {
string s;
while(cin>>s) {
int cnt=0,res=0;
char ch;
ch=s[0];
for(int i=0; i<s.size()-1; i++) {
if(s[i]==ch) cnt++;
if(s[i]!=ch)
{
ch=s[i];
cnt=1;
res++;
}
if(cnt==5)
{
cnt=0;
res++;
ch=s[i+1];
}
}
if(s[s.size()-1]==ch && cnt<5) res++;
else res+=2;
cout<<res<<endl;
}
return 0;
}