我只是想熟悉HackerRank环境并练习一些问题。
我正在尝试算法>热身中的第二个挑战:简单数组总和
我已经解决了它,它在我的本地机器上工作正常。
Code:
<?php
function testSum($n,$x)
{
$sum=0;
$x =explode(" ",$x);
for($i=0;i<$n;$i++)
{
$sum+=$x[$i];
}
echo $sum;
}
$handle = fopen ("php://stdin","r");
fscanf($handle,"%d",$n);
$arr_temp = fgets($handle);
$arr = explode(" ",$arr_temp);
array_walk($arr,'intval');
?>
但它每次都给我同样的回应:对运行代码的响应。
请帮助我如何在黑客排名中打印结果以及我在这里缺少什么。谢谢
我不是第一个,但让我试试(我的工作 hackerrank.com 太:)
<?php
/* simple solution for https://www.hackerrank.com/challenges/simple-array-sum */
/* Read and parse input */
$handle = fopen ('php://stdin', 'r');
fscanf($handle, '%d', $n);
$numbers = explode(' ', fgets($handle));
array_walk($numbers, function (&$value) {
$value = intval($value);
});
/* result: http://php.net/manual/en/function.array-sum.php */
echo array_sum($numbers);
简单的分步说明
- 读取用户输入 - 检查文档中的示例。
- 这里真的不需要
fscanf
。在我们的例子中,它从输入中读取数字并将值存储在$n
变量中。查看文档中的格式说明。 -
fgets($handle)
读取一个字符串。接下来我们使用explode
将字符串拆分为数组。这些都是非常基本且经常使用的PHP函数,请务必熟悉它们并阅读文档。 - 我们遍历(
array_walk
)数组并将所有元素转换为整数。我们在示例中使用匿名函数。这是一种更高级的技术,可以在此处跳过。 - 最后,我们使用
array_sum
函数计算并输出总和。
试试这个
$handle = fopen ("php://stdin","r");
fscanf($handle,"%d",$n);
$arr_temp = fgets($handle);
$arr = explode(" ",$arr_temp);
array_walk($arr,'intval');
$sum = 0;
for($i = 0; $i< $n; $i++) {
$sum = $sum + $arr[$i];
}
fwrite(STDOUT, $sum);
只需这样做:
$handle = fopen ("php://stdin","r");
fscanf($handle,"%d",$n);
$arr_temp = fgets($handle);
$arr = explode(" ",$arr_temp);
echo array_sum($arr);