最も少ないコインの問題を探します
9:1人の子供が1ドル未満の砂糖を買って、1ドルのお金を店員に渡しました.店員は一番少ないコインの個数で子供に探してほしいと思っています.2 5セント、1 0セント、5セント、1セントの硬貨を提供したと仮定し、販売員が最小の硬貨の個数で子供に渡すアルゴリズムを書く.
- /*
- 9: 1 , 1 。
- 。
- 2 5 、1 0 、5 、 1 ,
- * :windows/linux
- * :php4/php5
- * : in.txt,
- 1 , , 1
- 0.36
- :out.txt
- */
-
- $params=getParams(1);
- $argv0=trim($params[0]);
- // 1
- if(!is_numeric($argv0))
- {
- error_msg("params 1 must be a numbers");
- }
- if($argv0 > 1)
- {
- error_msg("params 1 must be a float );
- }
- $onedoll=100;//1 =100
- $coins=array(25,10,5,1);
- $payback=$onedoll-$argv0*$onedoll;
- $paybackCoins=array();
- while($payback > 0)
- {
- foreach($coins as $coin)
- {
- //
- if($payback >= $coin)
- {
- $paybackCoins[]=$coin;
- $payback-=$coin;
- break;
- }
- }
- }
- //
- output("payback with lest coins:".join(",",$paybackCoins),true);
- error_msg("execute success");
- /*
- in.txt
-
- */
- function getParams($paramNum)
- {
- $in=file_get_contents("in.txt");
- if($in===FALSE){
- error_msg("cannot read in.txt,please check in.txt exists
");
- }
- $in=preg_replace("/(\s+)/i", " ", $in);
- // ,
- $parms=split(" ",trim($in));
- if($parms===FALSE)
- {
- error_msg("cannot get param from in.txt
");
- }
- if(count($parms) $paramNum)
- {
- error_msg("it needs $paramNum params
");
- }
- return $parms;
- }
-
- /*
-
- isClean=true out.txt
- */
- function output($msg,$isClean=false)
- {
- if($isClean)
- {
- $handle = fopen('out.txt', 'w');
- fclose($handle);
- }
- error_log($msg."
", 3, "out.txt");
- }
- /*
-
- $is_exit
- */
- function error_msg($msg,$is_exit=true)
- {
- if($is_exit)
- die($msg."
");
- else
- echo $msg."
";
- }
- ?>