每瓶啤酒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瓶啤酒