ホームページ >バックエンド開発 >PHPチュートリアル >ビールは1本2元で、ワインの空瓶2本または瓶の蓋4つでビール1本と交換できる。 10元でビール何本飲めますか? php
//根据题意设定初始变量值//然后 一个while循环去操作//每换得一个瓶子,换的那个减去要做相应的数目//然后喝了啤酒后, 各数量加1//直到不符合要求。跳出循环 1 class Beer{ 2 3 protected $uni_gai = 4; //每4个瓶盖1瓶 4 protected $uni_bottle = 2; //每两个瓶子换1瓶 5 protected $uni_beer = 2; //每瓶2块钱 6 protected $rs = array();//存取结果 7 protected $total = 0; //当前买了啤酒的数量 8 protected $gai = 0; //当前有多少个啤酒 9 protected $empty_bottle = 0; //空瓶子10 11 public function __construct($money){12 $cur = $money / $this->uni_beer;13 $this->total = $cur;14 $this->gai = $cur;15 $this->empty_bottle = $cur;16 }17 18 public function run(){19 while($this->gai > 0 || $this->empty_bottle > 0){20 if($this->gai >= $this->uni_gai){21 $this->deal_num('gai');22 }23 if($this->empty_bottle >= $this->uni_bottle){24 $this->deal_num('empty_bottle');25 }26 27 $this->check_overflow();28 }29 return $this->rs;30 }31 32 public function deal_num($type){33 if($type == 'gai'){34 $this->gai -= $this->uni_gai;35 }else{36 $this->empty_bottle -= $this->uni_bottle;37 }38 $this->gai++;39 $this->empty_bottle++;40 $this->total++;41 }42 public function check_overflow(){43 if($this->gai < $this->uni_gai && $this->empty_bottle < $this->uni_bottle){44 $this->rs['gai'] = $this->gai;45 $this->rs['total'] = $this->total;46 $this->rs['empty_bottle'] = $this->empty_bottle;47 $this->gai = 0;48 $this->empty_bottle = 0;49 }50 }51 public function _print(){52 echo 'gai:', $this->gai;53 echo '<br>';54 echo 'empty_bottle:', $this->empty_bottle;55 echo '<br>';56 echo 'total', $this->total;57 echo '<hr>';58 }59 }60 61 $peer = new Beer(10);62 $rs = $peer->run();63 print_r($rs);
出力結果は次のとおりです: Array ( [gai] => 3 [empty_bottle] => 1 [total] => 15 )
3 蓋 ,空き瓶1本、ビール計15本