最近我参加了一个编程竞赛,关于这个问题。当我尝试提交时,在某些测试用例中,我的内存超出限制。我没有测试用例和问题,因为比赛已经结束。问题是这样的。
您被要求帮助一家公司减少求职面试的候选人人数。如果任何候选人具有CGPA,经验数量和考试成绩,以免其他候选人被拒绝。查找被拒绝的候选人人数
输入将来自命令行。像这样的东西,
第一行将有一个整数。是候选 n 的数量。
第二行将有 n 个用空格分隔的整数,表示每个候选项的 CGPA。
第三行将有 n 个用空格分隔的整数,表示每个候选人的体验。
第四行将有 n 个用空格分隔的整数表示每个候选者的测试核心。
示例输入
四1 3 5 6
6 2 6 1
1 2 3 4
示例输出
1
因为只有候选 2 具有所有 3 值减去作为候选 3 的另一个候选项。候选人 1 的经验数量等于候选人 3,这被认为是可以
的这是我的代码,只是想知道是否有人知道如何减少内存使用。
<?php
$input = fopen('php://stdin', 'r');
$numberOfPeople = intval(fgets($input));
$numberOfCGA = explode(' ', trim(preg_replace('/'s+/', ' ', fgets($input))));
foreach( $numberOfCGA as $key => $num )
{
$numberOfCGA[$key] = intval($num);
}
$numberOfExp = explode(' ', trim(preg_replace('/'s+/', ' ', fgets($input))));
foreach( $numberOfExp as $key => $num )
{
$numberOfExp[$key] = intval($num);
}
$numberOfScore = explode(' ', trim(preg_replace('/'s+/', ' ', fgets($input))));
foreach( $numberOfScore as $key => $num )
{
$numberOfScore[$key] = intval($num);
}
$numOfReject = 0;
for( $i = 0; $i < $numberOfPeople; $i++ )
{
for( $j = 0; $j < $numberOfPeople; $j++ )
{
if( $i == $j ) continue;
if( ( intval($numberOfCGA[$i]) < intval($numberOfCGA[$j]) )
&& ( intval($numberOfExp[$i]) < intval($numberOfExp[$j]) )
&& ( intval($numberOfScore[$i]) < intval($numberOfScore[$j]) ) )
{
$numOfReject++;
break;
}
}
}
echo $numOfReject . PHP_EOL;
如果你增加你的php内存怎么办?有关详细信息,请参阅 http://tutorials.hostucan.net/how-to-increase-php-memory-limit/。
另请查看:PHP preg_replace() - 内存问题。另类?