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(); } }
预览效果如下
相关文章推荐
- 一个关于if else容易迷惑的问题
- PHP5.2.*防止Hash冲突拒绝服务攻击的Patch
- 深入理解PHP之匿名函数
- JSP/PHP基于Ajax的分页功能实现
- 关于PHP通过PDO用中文条件查询MySQL的问题。
- 什么是设计模式
- c#调用COM组件
- PHP数据库长连接mysql_pconnect的细节
- Php Installing An Expansion
- C#实现把指定数据写入串口
- C#动态创建button的方法
- C#中抽象方法与虚拟方法的区别
- c#中虚函数的相关使用方法
- C#使用加边法计算行列式的值
- C#实现多线程的同步方法实例分析
- C#中尾递归的使用、优化及编译器优化
- C#实现子窗体与父窗体通信方法实例总结
- C#通用邮件发送类分享
- C#中this的用法集锦