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;
}
posted @ 2021-01-25 11:57  傻傻的小小豪  阅读(345)  评论(0编辑  收藏  举报