您的位置:首页 > 编程语言 > PHP开发

1、杨辉三角的解决思路

2015-09-22 08:06 721 查看

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);


最后的预览结果如下



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();
}
}


预览效果如下

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  php c#