题目40

幼儿园两个班的小朋友排队时混在了一起
每个小朋友都知道自己跟前面一个小朋友是不是同班
请你帮忙把同班的小朋友找出来
小朋友的编号为整数
与前面一个小朋友同班用Y表示
不同班用N表示
输入描述:
输入为空格分开的小朋友编号和是否同班标志
比如 6/N 2/Y 3/N 4/Y
表示一共有4位小朋友
2和6是同班 3和2不同班 4和3同班
小朋友总数不超过999
0< 每个小朋友编号 <999
不考虑输入格式错误

输出两行
每一行记录一班小朋友的编号 编号用空格分开
并且
1. 编号需要按照大小升序排列,分班记录中第一个编号小的排在第一行
2. 如果只有一个班的小朋友 第二行为空
3. 如果输入不符合要求输出字符串ERROR

示例:
输入
1/N 2/Y 3/N 4/Y
输出
1 2
3 4
说明:2的同班标记为Y因此和1同班
3的同班标记位N因此和1,2不同班
4的同班标记位Y因此和3同班

<?php
$s=trim(fgets(STDIN));
solution($s);

function solution($s)
{
    $s=explode(' ',$s);
    $c1=[];
    $c2=[];
    if(count($s)==1){
        echo intval($s);
        return;
    }
    $banji=1;//默认班级
    for ($i=0;$i<count($s);$i++){
        if($banji==1){
            if(strpos($s[$i],'Y')){
                $c1[]=intval($s[$i]);
            }else{
                $c2[]=intval($s[$i]);
                $banji=2;//记录当前班级
            }
        }elseif ($banji==2){
            if(strpos($s[$i],'Y')){
                $c2[]=intval($s[$i]);
            }else{
                $c1[]=intval($s[$i]);
                $banji=1;//记录当前班级
            }
        }

    }
    sort($c1);
    sort($c2);
    if(empty($c1)||empty($c2)){
        if(empty($c1)&&empty($c2)){
            echo "ERROR";
            return;
        }elseif (empty($c1)){
            echo implode(' ',$c2);
            return;
        }else{
            echo implode(' ',$c1);
            return;
        }
    }
    if($c1[0]>$c2[0]){
        echo implode(' ',$c2).PHP_EOL;
        echo implode(' ',$c1);
    }else{
        echo implode(' ',$c1).PHP_EOL;
        echo implode(' ',$c2);
    }
}

 

posted @ 2022-07-21 16:45  weigm*  阅读(126)  评论(0)    收藏  举报