黑马程序员技术交流社区
标题:
瓶盖换瓶子的算法实现
[打印本页]
作者:
PDH
时间:
2015-9-8 18:22
标题:
瓶盖换瓶子的算法实现
public class PingGaiPro {
/**
* 问题:有x个人买可乐喝,3个瓶盖可以换一瓶可乐,问需要至少买多少瓶可乐
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println(bottleSum(27));
System.out.println(bottleSum_1(27));
}
//模仿一次一次的买可乐实现
//思路:每次购买1瓶,达到3瓶进行一次兑换,循环,直到够每人一瓶
public static int bottleSum(int x){
int sum=0;
int temp=0;
for(int i=1;i<=x;i++){ //模仿每个人分到一瓶可乐
temp++;
if(temp==3){ //如果手头的可乐达到了3瓶则sum不加,并清零temp
temp=0;
continue;
}
sum++; //sum记录买了多少瓶
}
return sum;
}
//从总人数上面入手算出需要多少个
//思路是:每三个人一组,买两瓶可乐,和老板借一瓶可乐,然后喝完,拿三个盖子换一瓶新可乐,然后还给老板,这样的话付出2瓶满足三个人
public static int bottleSum_1(int x){
return 2*x/3;
}
作者:
PDH
时间:
2015-9-8 18:25
有不同思路欢迎切磋,共同进步
作者:
PDH
时间:
2015-9-8 18:33
关于自己上面代码的优化,我刚看了一下,可以把bottleSum(int x)方法中的temp变量省掉,if语句改成if(i%3==0) sum--; 这样就可以了。不过不容易理解了就,看来写代码是门艺术啊!
作者:
PDH
时间:
2015-9-8 19:48
bottleSum_1(int x)方法中应该返回 return 2*x/3+x%3;
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2