题目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); } }

浙公网安备 33010602011771号