如何使用PHP进行Triangle Roll-Up?

时间:2016-07-22 08:23:35

标签: php

我在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/>";
}

接下来我很困惑

解决我问题的任何解决方案?

4 个答案:

答案 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