Zero有很多明信片和照片一条线挂在墙上。他决定把它们放进衣柜,把墙空出来挂上五月天的海报。Zero必须把所有的明信片和照片放进衣柜,他不能跳过某一张明信片或照片而直接去拿下一张,他不喜欢同时拿明信片和照片,他一次最多能拿5样东西。请帮他计算一下要搬运的最少次数吧。 输入要求 输入只包含“C”和“P”的字符串,最长为100。C代表明信片,P代表照片。字符串第i个字符表示第i个对象,顺序为从左到右。C语言
时间: 2024-03-08 13:48:44 浏览: 82
以下是使用C语言实现的代码:
```c
#include <stdio.h>
int main() {
char str[100];
int cnt_c = 0, cnt_p = 0, cnt_move = 0;
scanf("%s", str);
for (int i = 0; str[i] != '\0'; i++) {
if (str[i] == 'C') cnt_c++;
else if (str[i] == 'P') cnt_p++;
}
while (cnt_c > 0 || cnt_p > 0) {
int cnt = 0;
for (int i = 0; i < 5; i++) {
if (cnt_c > 0) {
cnt_c--;
cnt++;
}
else if (cnt_p > 0) {
cnt_p--;
cnt++;
}
}
cnt_move++;
}
printf("%d\n", cnt_move);
return 0;
}
```
首先,我们定义了三个变量,分别用于记录明信片数量、照片数量和搬运次数。
然后,使用`scanf()`函数从输入中读取字符串。
接着,使用`for`循环遍历字符串中的每个字符,统计明信片和照片的数量。
最后,使用`while`循环,每次最多搬运5个物品,直到所有物品都被搬运完毕。每次搬运完成后,搬运次数加1。
最终,使用`printf()`函数输出搬运次数。
阅读全文