30 个人在一条船上,超载,需要 15 人下船。
于是人们排成一队,排队的位置即为他们的编号。
报数,从 1 开始,数到 9 的人下船。
如此循环,直到船上仅剩 15 人为止,问都有哪些编号的人下船了呢?
$totalNumber = 30;//总共人数
$needOffNumber =15;//需要下船人数
$boardPersons= range(1,$totalNumber);//将30进行编号
$needOffNo = 9; //需要下船的编号
$loopIndex= 0;//定义循环编号
$offBoardNumber= 0; //下船人数
$no =0;//序号 ,
while(true){
//如果循环到最后一位则从头开始
if($loopIndex==$totalNumber){
$loopIndex=0;
}elseif($offBoardNumber==$needOffNumber){
//若已下船人员已经达到需要下船的数量则跳出循环
break;
}else{
if($boardPersons[$loopIndex]==0){
$loopIndex++;
continue;
}
$no++;
if($no==$needOffNo){
echo $boardPersons[$loopIndex] ." off board".PHP_EOL;
//array_splice($boardPersons,$loopIndex,1,0);
$boardPersons[$loopIndex]=0;//将下船人员标志置0
$no = 0;//重新报数
$offBoardNumber++;//下船人数增加
}else{
$loopIndex++;
}
}
}