问题:汽水2元一瓶,四个盖子换一瓶,两个空瓶一瓶,问10元可以喝几瓶?(不许借别人空瓶或瓶盖,但可以先喝汽水再付空酒瓶或瓶盖)
最近同事让笔者看了一道脑筋急转弯的数学题,当然不是很难,只要会加减法应该都会解决;笔者觉得类似的问题可以用代码实现,JS,JQ,JAVA,C,C++,PHP,.NET,数据库语言等等都可以解决此类问题,在这里笔者就以java为例处理该问题。
package com.sinolife.mtrs.apply.controller; import java.util.Arrays; /** * @author delin Li * @version createTime:2017-12-14下午04:10:37 * @Description */ public class TestSort { /** * @param args */ public static void main(String[] args) { int price = 2;//汽水单价2元 int money = 10;//金额 String str = bublle(money/price); System.out.println(str); } public static String bublle(int num){ int k= num;//汽水瓶数 int a= num;//瓶盖数 int b= num;//空瓶数 //先付瓶盖和空瓶,再喝汽水 while(a>=4||b>=2){ if(a>=4){ a -=4; k +=1; a +=1; b +=1; } if(b>=2){ b -=2; k +=1; a +=1; b +=1; } } //先喝汽水,再付瓶盖和空瓶(先喝一瓶汽水) while(a>=3||b>=1){ if(a>=3){ a -=4; k +=1; a +=1; b +=1; } if(b>=1){ b -=2; k +=1; a +=1; b +=1; } } //先喝汽水,再付瓶盖和空瓶(先喝两瓶瓶汽水) while(a>=2||b>0){ if(a>=2){ a -=4; k +=2; a +=2; b +=2; b -=2; } if(b>=2){ b -=2; k +=1; a +=1; b +=1; } } return k+"(瓶)"+a+"(盖)"+b+"(空瓶)"; } }
运行结果:
这个问题java当然不止一种处理放案;其他语言也有多种方案解决,在这里笔者想表达的是类似问题可以用代码很快的解决,省时省力!以后遇见类似问题可以试着用代码解决。大家也可以发现,我们可以随便更改数据,比如上边是10元,我们可以改为20元或者200元,当然也可以修改其他条件。
如果有朋友发现问题,希望指出来,共同学习!