1、杨辉三角的解决思路

PHP代码杨辉三角

    /** * 使用div模式输出杨辉三角(这个并不是等腰三角形,而是要靠css样式控制。 * @param $line int 总行数 */
function Triangle($line) {
        echo <<<'style' <style type="text/css"> span { display: inline-block; margin: 2px; border: 1px solid #0076C8; width: 60px; } div { text-align: center; }</style> style;
        echo '<div>';
        for ($i = 1; $i <= $line; $i++) {
            echo '<p style="text-align: center; COLOR: #0076C8;">';

            for ($j = 1; $j <= $i; $j++) {
                if ($j == 1 || $j == $i) {

                    echo '<span>';
                    echo $data[$i][$j] = 1;
                    echo '</span>';
                } else {
                    echo '<span>';
                    echo $data[$i][$j] = $data[$i - 1][$j] + $data[$i - 1][$j - 1];
                    echo '</span>';
                }
            }
        echo '</p>';
        }
}

/** * 使用table的方式输出杨辉三角(打印出等腰三角形) * @param $line int 总行数 */
function secondTriangle($line) {
        title("这是一个{$line}行的杨辉三角");
        echo <<<'style' <style type="text/css"> table{ border-collapse:collapse; color:blue; border:1px solid blue; } td{ width:50px; text-align:center; height:23px; font-size:12px; font-family:"微软雅黑"; line-height:23px; } </style> style;
        echo '<table border=1>';
        for ($i = 1; $i <= $line; $i++) {
            echo '<tr>';
            //补齐前导空白单元格
            for ($n = 1; $n <= $line - $i; $n++) {
                echo '<td>*</td>';
            }
            //只控制输出
            for ($j = 1; $j <= 2 * $i - 1; $j++) {
                if ($j == 1 || $j == 2 * $i - 1) {
                    $arr[$i][$j] = 1;
                    echo "<td>1</td>";
                } elseif ($j % 2 === 0) {
                    $arr[$i][$j] = 0;
                    echo "<td></td>";
                } else {
                    //往上找单元格
                    $arr[$i][$j] = ($arr[$i - 1][$j - 2]) + ($arr[$i - 1][$j]);
                    echo "<td>{$arr[$i][$j]}</td>";
                }
            }
            //补齐后导单元格
            for ($n = 1; $n <= $line - $i; $n++) {
                echo '<td>*</td>';
            }
            echo '</tr>';
            }
        echo '</table>';
}

调用代码:
Triangle(10);
secondTriangle(10);
最后的预览结果如下
《1、杨辉三角的解决思路》

C#代码打印杨辉三角

代码同php无二,只是因为是控制台,所以等腰样式不太好控制,但是原理同table版本的一样。

    static void yanghuisanjiao(int line)
    {   
         //定义一个用来存放数据的二维数组
         int[,] arr = new int[line+1, line*2];
         //控制行的输出
         for (int i = 1; i <= line; i++)
         {
                    //控制前导空格的输出 如果是一个占位符占一个空格,那么就是line-i
                 for (int n = 0; n < line - i; n++)
                 {
                        Console.Write(" ");
                 }
                 for (int j = 1; j <= 2*i-1; j++)
                 {
                    if (j == 1 || j == 2*i-1)
                    {
                        arr[i, j] = 1;
                        Console.Write(arr[i, j].ToString());
                    }
                    else if (j % 2 == 0)
                    {
                        arr[i, j] = 0;
                        Console.Write(' ');
                    }
                    else
                    {
                        arr[i, j] = arr[i - 1, j-2] + arr[i - 1, j];
                        Console.Write(arr[i,j]);//Console.Write(arr[i, j].ToString());
                    }
               }
             Console.WriteLine();
        }
    }

预览效果如下
《1、杨辉三角的解决思路》

    原文作者:杨辉三角问题
    原文地址: https://blog.csdn.net/dab1117/article/details/48649103
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞