一些php小算法
1、写一个function实现数组内每个元素之间加法的迭代运算,注意:数组元素全部为自然数。例子:$data=array(1.2.3);程序要求打印出数组每个数组元素相互之间各种可能性加法(包括元素自己本身加法)1+1=2,1+2=3,1+3=4,2+2=4,2+3=5,3+3=6
思路:两个for循环依次相加每个元素。
function test($arr){ $count = count($data); for($i=0;$i<$count;$i++){ //如果是往后加就是下面的 //如果元素本身要加上之前的元素则: //for($j=0;$j<$count;$j++){ for($j=$i;$j<$count;$j++){ $sum = $data[$i]+$data[$j]; echo $data[$i]."+".$data[$j]."=".$sum."<br>"; } } }
2、一个小孩买了价值小于1美元的糖,并将1美元的钱交给售货员。售货员希望用数目最少的硬币个数找给小孩。假设提供的数目不限的面值为25美分,10美分,5美分,1美分的硬币,写一个算法让售货员用最少的硬币个数找给小孩。
//输入糖的价格必须小于1美元 //例如糖的价格为0.4美元 function payback($par){ if($par>1){ return; } //一美元等于100美分 $money_total = 100; //应该找回的钱为$payback美分 $payback = $money_total - $par*100; $arr = array(25,10,5,1); while($payback>0){ foreach ($arr as $key => $value) { if($payback >= $value){ $paybackCoins[] = $value; $payback -= $value; break; } } } $paybackCoins = array_count_values($paybackCoins); $str = "应该找回"; foreach ($paybackCoins as $key => $value) { $str .= $key."面值硬币".$value."个"; } return $str; }