Comment detail

コインを減らす払い方 (Nested Flatten)
PHPで書いてみる。
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<?php
function payment($price, $wallet){
	$coins = array('500' => 0, '100' => 0, '50' => 0, '10' => 0, '5' => 0, '1' => 0);
	$payment = pay($price, $wallet, $coins);
	foreach($coins as $coin=>$value){
		while($coin <= $payment['change']){
			$payment['change'] -= $coin;
			if($payment['coins'][$coin]){
				$payment['coins'][$coin]--;
			}
		}
	}
	return $payment['coins'];
}

function pay($price, $wallet, $coins){
	foreach($wallet as $coin=>$value){
		for($i = 0; $i < $value;$i++){
			$price -= $coin;
			$coins[$coin]++;
			if($price <=0){
				return array('coins'=>$coins,'change'=> - $price);
			}
		}
	}
	echo("お金が足りません");
}
$wallet = payment(147,array('1'=>2,'10'=>4,'100'=>3));
print_r($wallet);
?>

Index

Feed

Other

Link

Pathtraq

loading...