新浪博客 发表时间 --2009-07-27 20:13:25
大学自习室
<wbr>算法:</wbr>
<wbr><wbr><wbr><wbr><wbr><wbr>这道题我做了好久....一直被误导着<img src="http://simg.sinajs.cn/blog/images/face/018.gif" alt="ACM-FZUoj2009-1573解题报告" title="ACM-FZUoj2009-1573解题报告" style="margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; list-style-type:none; list-style-position:initial">....题目要求找座位,找出Roam满足的座位,给出了三个条件..</wbr></wbr></wbr></wbr></wbr></wbr>
- 旁边有另一个空座位,可以是左边,也可以是右边(放书包用的...);
- 为了环境相对稳定,满足要求1的同时,Roam的座位必须是离两边过道最远的;
- 在教室的最后一排 (-__-!)。
然后有约定了几个条件:
- 只考虑教室最后一排中间部分的座位,两边就是过道;
- 每个座位都有一个编号,若有N(1<=N<=50)个座位,则座位编号从左到右依次为 0,1,2,…,N-1.
- 输入数据使用一个长度等于座位数的字符串 Seat 表示,字符串中的每一个字符对应一个座位的状态,其中的E(大写字母)表示座位没人,P(大写字母)表示座位已经有人了。
<wbr><span style="word-wrap:normal; word-break:normal; line-height:18px; font-size:12px"><wbr></wbr></span></wbr>
数据输入
输入包括多组数据。
每组数据输入数据的第一行是一个数字N,(1<=N<=50),表示该教室最后一排有N个座位。第二行是一个字符串,表示字符串seat。
输出数据
对于每组输出数据,输出只有一行,即为你所找到的座位的编号。如果有多个符合条件的座位,则仅输出其中编号最小的那个。
- 如果有多个符合条件的座位,则仅输出其中编号最小的那个;
- 如果不存在这样的座位,输出-1。
算法:
<wbr><wbr><wbr>1.先用数组接收字符串,再把数组赋给已赋初值的的数组,存储接收的字符。。。</wbr></wbr></wbr>
<wbr><wbr><wbr>2.以座位旁必须有空座位为条件(我就是被这个给害的,当只有‘E’时也输出0了,但它应该输出的是-1),当数组里有两个相邻元素都为‘E’时,就把为‘E’的两个位置记录下来,分别存放到另一个数组,数组下标对应位置值。。</wbr></wbr></wbr>
<wbr><wbr><wbr><wbr>3.设置一个变量p=0,来和前面出现‘E’的位置一起与中点相减取绝对值比较,即fabs(b[i]-(k-1)/2)<fabs(p-(k-1)/2),k为数组长度,p就是变量了,如果为真的话就把p=b[i],然后输出p..</wbr></wbr></wbr></wbr>
<wbr><wbr>4.特殊情况,当测试数据为‘E’'E'时要输出0..</wbr></wbr>
代码:
<wbr><wbr>暂时存起来...有需要的朋友给我留言.....</wbr></wbr>