//根據題意設定初始變量值
//然后 一個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瓶啤酒