黑马程序员技术交流社区
标题:
分可乐问题
[打印本页]
作者:
shuren2015
时间:
2015-2-28 20:49
标题:
分可乐问题
代码简单,CPU难过,有想法的请多指教
package blog;
//28人买可乐喝,3个可乐瓶盖可以换一瓶可乐,那么要买多少瓶可乐,够28人喝?
//假如是50人,又需要买多少瓶可乐?(需写出分析思路)
//玩玩而已,思路就不写了
public class CokeDemo {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println(need(100));
}
//定义方法,输入可乐数,返回可以给最多多少人喝
public static int people(int sum){
int person=sum;
int bottle=sum;
while(bottle>1){
person+=bottle/3;
bottle=bottle/3+bottle%3;
if(bottle==2){
person+=1;
break;
}
}
return person;
}
//输入人数,获得需要的可乐数量
public static int need(int person){
int count=1;
//从1开始遍历,直到count瓶可乐能供给的人数不小于需要喝可乐的人数
while(people(count++)<person){
;
}
return count-1;
}
}
复制代码
作者:
fantacyleo
时间:
2015-2-28 21:27
我去年泡论坛时,这题可谓轰动一时,感觉不同思路的同学们就差吵起来了。贴一下我当时写的代码吧:
public int getBottles(int n) {
int bottle = 0;
int cap = 0;
for (i = 1; i <= n; i++) {
if (cap < 3) {
bottle ++;
cap++;
}
else
cap = 1;
}
return bottle;
}
复制代码
思路 : 一开始0瓶,0盖子。轮到每个人时,如果盖子数是3个,就拿3个盖子换一瓶,盖子数变成1(3个换一瓶,减3,但换来的一瓶又自带盖子,加1,最后是剩1个盖子),否则就买一瓶,盖子数+1
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2