我在Google上发现了一个像这样的问题:
给出输入时:4,7,3,6,7
输出如下:
81
40 41
21 19 22
11 10 9 13
4 7 3 6 7
我只能尝试这样:
for($i = 1; $i<=5;$i++){
for($j=0; $j<$i; $j++){
echo "4";
}
echo "<br/>";
}
接下来我很困惑
解决我问题的任何解决方案?
答案 0 :(得分:3)
<?php
$input = array(4, 7, 3, 6, 7);
$lines = rollup($input);
function rollup ($input) {
$return = array();
$line = array();
if (count($input) > 0) {
foreach ($input as $k=>$v) {
if (isset($input[$k+1]))
$line[] = $v + $input[$k+1];
}
$return = implode(' ', $input);
rollup($line);
}
if (!empty($return))
echo $return . '<br />';
}
?>
答案 1 :(得分:1)
您可以使用此代码
<?php
$arr = [4, 7, 3, 6, 7];
$count = count($arr);
$finalStr = "";
while($count>0){
$str = "";
foreach($arr as $key=>$val){
$arr[$key] = $arr[$key]+$arr[$key+1];
$str .="$val ";
}
$str .= "\n";
$finalStr = $str . $finalStr;
unset($arr[count($arr)-1]);
$count--;
}
echo $finalStr;
?>
查看现场演示:https://eval.in/609908
输出是:
81
40 41
21 19 22
11 10 9 13
4 7 3 6 7
答案 2 :(得分:1)
试试这个,
<?php
$a = 4;
$b = 7;
$c = 3;
$d = 6;
$e = 7;
for($y = 1; $y<=5;$y++){
for($z=0; $z<$y; $z++){
$f = $a+$b;
$g = $b+$c;
$h = $c+$d;
$i = $d+$e;
$j = $f+$g;
$k = $g+$h;
$l = $h+$i;
$m = $j+$k;
$n = $k+$l;
$o = $m+$n;
}
}
echo $o.'<br/>';
echo $m.' '.$n.'<br/>';
echo $j.' '.$k.' '.$l.'<br/>';
echo $f.' '.$g.' '.$h.' '.$i.'<br/>';
echo $a.''.$b.' '.$c.' '.$d.' '.$e;
?>
答案 3 :(得分:1)
只是为了给出另一个解决方案,因为我喜欢这样的'益智游戏',我会给你这个:
<pre>
<?php
//init
$input = [4, 7, 3, 6, 7];
$output = [$input];
//process
while(count($input) > 1) {
foreach($input as $key => $val) {
$key ? $input[] = $val + $prev : $input = array();
$prev = $val;
}
array_unshift($output, $input);
}
//output
array_walk($output, function($line){
echo implode(' ', $line) . "\n";
});
?>
</pre>
看到它正常工作here