FOJ--1573--大学自习室--解题报告

图书馆终于建成了,可以自习的教室也多了。所以,往常从不自习的Roam也开始上自习了。图书馆的自习室虽然很大而且座位众多,但找到满意座位也确实能算一门学问……

由于Roam找座不是很有经验,而且他还有一些特殊的要求,所以Roam希望你来帮他选择座位。

Roam 对于座位的要求有:

  1. 旁边有另一个空座位,可以是左边,也可以是右边(放书包用的...);
  2. 为了环境相对稳定,满足要求1的同时,Roam的座位必须是离两边过道最远的;
  3. 在教室的最后一排 (-__-!)。

为了使问题更加明确,我们做以下假定:

  1. 只考虑教室最后一排中间部分的座位,两边就是过道;
  2. 每个座位都有一个编号,若有N(1<=N<=50)个座位,则座位编号从左到右依次为 0,1,2,…,N-1.
  3. 输入数据使用一个长度等于座位数的字符串 Seat 表示,字符串中的每一个字符对应一个座位的状态,其中的E(大写字母)表示座位没人,P(大写字母)表示座位已经有人了。

例如:Seat="EPEPEEE" 表示以下的情况:

 

EmptyPeopleEmptyPeopleEmptyEmptyEmpty
0123456

 

现在需要你来找出满足Roam要求的座位的编号。

数据输入

输入包括多组数据。
每组数据输入数据的第一行是一个数字N,(1<=N<=50),表示该教室最后一排有N个座位。第二行是一个字符串,表示字符串seat。

输出数据

对于每组输出数据,输出只有一行,即为你所找到的座位的编号。如果有多个符合条件的座位,则仅输出其中编号最小的那个。

  • 如果有多个符合条件的座位,则仅输出其中编号最小的那个;
  • 如果不存在这样的座位,输出-1。

样例输入

7
EPEPEEE
6
PEPPEP

样例输出

4
-1
解法一:这题我WA了好几次,实在是不知道自己哪错了,郁闷啊
我是从第一个位置开始找,把找到适合的都记下,最后找出编号最小的
下面是我WA的代码:
 
不知道我这样想有没有错,测了很多数据都会对
解法二:最后找到了一个正解,这种解法是从中间开始向2边搜索,搜到就输出这个位置的编号,搜索也就结束了
代码如下:
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值