一些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;

}

  

posted on 2018-03-26 14:43  oceanL  阅读(194)  评论(0编辑  收藏  举报

导航