P8080 题解

题目传送门

小学生又来写题解啦!

你可能会认为,能够使用杯座人数的最大值,就是杯座数量

但结合样例一,若杯座数量大于总人数,只能输出总人数

下一个问题是如何计算杯座数量。

边读入边计算即可,若是普通座位,计数器直接加。

若是爱心座位,见到第一个座位时,计数器直接加,并标记已经记过了这个双人座

若发现双人座标记,则计数器不用加,但要把标记清除。

事实上,输出时还有细节,在代码处会提出。

满分代码:

#include <iostream>
#include <cstdio>
using namespace std;

int main()
{
	int n, cnt = 0;
	bool L = false;  //双人座标记,开始时置零。 
	scanf("%d", &n);
	for (int i = 1; i <= n; i++)
	{
		char t;
		cin >> t;
		if (t == 'S') cnt++;
		else if (t == 'L')
		{
			if (L == false) cnt++, L = true;  
			else L = false;
		}
	}
	//以下两行输出十分容易写错。 
	if (cnt+1 > n) printf("%d", n);
	else printf("%d", cnt + 1);  //只用加最左侧的杯座,因为右侧杯座已经判过了。
	return 0;
}

首发:2022-01-29 22:46:25

posted @ 2022-08-25 00:00  liangbowen  阅读(16)  评论(0编辑  收藏  举报