我正在研究一个hackerrank脚本,它适用于小输入,但对于数组输入较大,它会停止输出,回声停止工作。没有错误,只是没有。
$_fp = STDIN;
fscanf($_fp,"%d",$n);
$max = 0.0;
$max_cnt = 0.0;
$board = [];
for ($i = 0; $i < $n; $i++) {
$points = explode(' ', fgets($_fp));
$a = intval($points[0]);
$b = intval($points[1]);
runBoard2($a, $b);
}
function runBoard2 ($a, $b) {
global $board, $max, $max_cnt;
for($r = 0; $r < $a; $r++) {
for($c = 0; $c < $b; $c++) {
@$board[$r][$c] += 1;
$cellVal = $board[$r][$c];
if ($cellVal > $max) {
$max = $cellVal;
$max_cnt = 1;
} elseif ($cellVal === $max) {
$max_cnt++;
}
}
}
}
echo $max_cnt;
stdin.php:
2
1000000 1000000
1000000 1000000
命令行电话:
cat stdin.php | php rectangulargame.php
适用于stdin.php:
3
2 3
3 7
4 1
认为它与此行@$board[$r][$c] += 1;
有关,就好像我取消@ suppress以隐藏有关未定义偏移量的通知一样,它会显示这些消息,直到它遇到内存不足错误。那么,是否有任何建议我应该如何重构以避免这种情况?
进行了更多挖掘并发现了使用行和列的分数来计算而没有构建矩阵的提示,在使用PHP包裹我的头之后,它就像魅力和快速一样。
感谢所有花时间审阅的人,特别是评论。
任何人都知道如何编辑这个以获得-1票改善?
答案 0 :(得分:0)
因此,解决方案是重构计算仅使用行和列,并使用多个作为最终答案。