12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- <?php
- class Change
- {
- /**
- *
- * @var 每多少盖子换一瓶汽水
- */
- public $capUnit;
- /**
- *
- * @var 每多少空瓶换一瓶汽水
- */
- public $bottelUnit;
- /**
- *
- * @var 总共金额
- */
- public $money;
- /**
- *
- * @var 汽水单价
- */
- public $unit;
- /**
- *
- * @var 总共能喝多少汽水
- */
- public $sum;
- public function __construct()
- {
- $this->money = 10;
- $this->unit = 2;
- $this->capUnit = 4;
- $this->bottelUnit = 2;
- }
- protected function capToWater($cap)
- {
- return intval($cap / $this->capUnit);
- }
- protected function capLeft($cap)
- {
- return $cap % $this->capUnit;
- }
- protected function bottleToWater($bottle)
- {
- return intval($bottle / $this->bottelUnit);
- }
- protected function bottelLeft($bottle)
- {
- return $bottle % $this->bottelUnit;
- }
- public function doCal()
- {
- $this->sum = intval($this->money / $this->unit);
- return $this->cal($this->sum, 0, 0, 0);
- }
- protected function cal($num, $lastNum, $left_cap, $left_bottle)
- {
- $cap = $num + $left_cap;
- $bottle = $num + $left_bottle;
-
- $capToWater = $this->capToWater($cap);
- $bottleToWater = $this->bottleToWater($bottle);
- $getWater = $capToWater + $bottleToWater;
- $this->sum += $getWater;
-
- $left_cap = $this->capLeft($cap);
- $left_bottle = $this->bottelLeft($bottle);
-
- $capToWater_next = $this->capToWater($getWater + $left_cap);
- $bottleToWater_next = $this->bottleToWater($getWater + $left_bottle);
-
- if ($capToWater_next || $bottleToWater_next) {
- $getWater = $this->cal($getWater, $num, $left_cap, $left_bottle);
- }
- return $this->sum;
- }
- }
- $c = new Change();
- echo $c->doCal();
|