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

 

posted @ 2018-06-05 14:15  _Eternity味道  Views(95)  Comments(0Edit  收藏  举报