PHP实现一些经典算法
一、PHP实现画菱形
基本思想:
根据长宽画菱形, 先从顶点画上半部分, 再从中间两个点向下画下半部分
<?php function rhombus($heght,$width){ if(($width%$heght)!=0) { echo "请输入对的长和宽能整除!";exit; } $rate = $width/$heght; for($i=0;$i<$heght+1;$i++) { echo $i; for($j=0;$j<$width+1;$j++) { if($i<$heght/2) { if($j == ($width/2)-($i*$rate) || $j == ($width/2)+($i*$rate) ) { echo "*"; }else { echo "-"; } } else { if($j == (($i-($heght/2))*$rate) || $j == $width-(($i-($heght/2))*$rate) ) { echo "*"; }else { echo "-"; } } } echo "<br>"; } } rhombus(4,8);
一、PHP实现 杨辉三角
基本思路:
每一行的第一位和最后一位是1,没有变化,这种算法是用一个二维数组保存,另外有种算法用一维数组也可以实现,一行 一行的输出。
<?php // 1 // 1 1 // 1 2 1 // 1 3 3 1 // 1 4 6 4 1 // 1 5 10 10 5 1 /** * [yanghui description] * 首先第N行有N个数, * 其次每行的第一个和最后一个(第N个)数肯定是1, * 除了每行第一个和最后一个数外,第N行的第i个数等于第N-1行的第i-1个数加上第N-1行的第i个数 * 知道以上三点利用for循环写出杨辉三角,存于2维数组 * */ function yanghui($num) { $array = array(); for ($i=1; $i < 10 ; $i++) { for ($j=1; $j <= $i; $j++) { if($j==1 || $j == $i) { $array[$i][$j] = 1; } else { $array[$i][$j] = $array[$i-1][$j-1] + $array[$i-1][$j]; } } } echo "<pre>"; print_r($array); } yanghui(10);
知止而后有定,定而后能静,静而后能安,安而后能虑,虑而后能得。
所谓诚其意者,毋自欺也。