滴滴笔试编程IP地址题
<?php $stdin = fopen('php://stdin','r'); $count = trim(fgets($stdin)); //var_dump($count);die(); for($i=1;$i<$count;$i++){ $input[] = trim(fgets($stdin)); } $inputBackup = $input; //var_dump($input); foreach($input as &$v){ list($add,$num[]) = explode('/',$v); $add = explode('.',$add); foreach($add as &$_v){ $_v = decbin($_v); $_v = str_pad($_v,8,"0",STR_PAD_LEFT); } $address[] = implode('',$add); } $j = 0; foreach($address as $k => $v){ ${'array'.$j}['value'] = substr($v,0,$num[$k]); ${'array'.$j}['key'] = $k; $j++; } $j--; for($n=0;$n<=$j;$n++){ for($m=0;$m<=$j;$m++){ if($m != $n){ if($num[$n] <= $num[$m]){ $tmp = (substr(${'array'.$m}['value'],0,$num[$n])); if($tmp == ${'array'.$n}['value']){ unset(${'array'.$m}); } }else{ $tmp = (substr(${'array'.$n}['value'],0,$num[$m])); if($tmp == ${'array'.$m}['value']){ unset(${'array'.$n}); } } } } } for($n=0;$n<=$j;$n++){ if(isset(${'array'.$n})){ $keys[] = ${'array'.$n}['key']; } } foreach($inputBackup as $k => $v){ if(!in_array($k,$keys)){ unset($inputBackup[$k]); } } $counting = count($inputBackup); print($counting.'<br>'); foreach($inputBackup as $k => $v){ print($v.'<br>'); } ?>最后出来结果和测试用例比莫名其妙少了一组TuT 感觉就这样和AC擦肩而过了
6
192.168.0.0/16
172.50.137.225/32
202.139.219.192/32
192.183.125.71/32
201.45.111.138/32
172.24.0.0/17
#滴滴#