昨天在家没事看小人书,发现了一个酒瓶换酒的问题,想了想还是挺好玩的,于是这篇文章就诞生了.
问题是:在商店买了10瓶酒,每3个空瓶能换一瓶啤酒,问最多能喝多少瓶酒?
<?php /*在商店买了10瓶酒,每3个空瓶能换一瓶啤酒,问最多能喝多少瓶酒?*/ $empty = '3'; // 空瓶数 $bottle = '10'; // 瓶子数 $wine = '10'; // 喝的酒数 $bottle = intval($bottle/$empty)+$bottle%$empty+$bottle; $wine += intval($bottle/$empty); // 到此为止共喝14瓶 if ($bottle%$empty=='2'){ // 剩两瓶还能借个瓶 喝完还了就是 $wine++; } echo $wine; /*另一种思路*/ $empty = '3'; // 空瓶数 $bottle = '10'; // 瓶子数 $wine = '10'; // 喝的酒数 while($bottle>=2){ //if $bottle=2 ,可以借老板个空瓶,喝完后还给他 $bottle-=2; //$bottle-3+1 ++$wine; } echo $wine; ?>
提炼一下就变成了通解的问题,当然,一如既往只是示例而已。
<form action="bottom.php" method="post"> 瓶数:<input type=text name=bottom > 几瓶酒能够换一瓶酒:<input type=text name=viv > <br/><input type=submit value="提交"> <input type=reset value="重置"> </form>
bottom.php
<?php class bottom { public $total; //总共有多少瓶酒 public $viv; //$viv 表示几瓶空瓶能够换取一瓶酒 public $sum; //能够喝到的总瓶数 public $bottom; function __construct($total,$viv){ $this->total=$total; $this->viv=$viv; } function total() { $bottom=$this->total; $sum=0; while($this->total>=$this->viv-1) { $this->total=($this->total-$this->viv+1); ++$sum; } echo '总共能喝到'; echo $sum+$bottom.'瓶酒'; } } @$bottoma=$_POST["bottom"]; @$viva=$_POST["viv"]; $diddo=new bottom($bottoma,$viva); $diddo->total(); ?>