滴滴笔试编程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
#滴滴#
查看19道真题和解析