黑马程序员技术交流社区
标题:
"28人买可乐喝,3个可乐瓶盖可以换一瓶可乐,那" 这个题.....
[打印本页]
作者:
破烂小白
时间:
2015-5-14 18:38
标题:
"28人买可乐喝,3个可乐瓶盖可以换一瓶可乐,那" 这个题.....
class demo2
{
public static void main (String[] args)
{
System.out.print((28/4)*3+(28&4));
}
]
复制代码
/*
28人买可乐喝,3个可乐瓶盖可以换一瓶可乐,那么要买多少瓶可乐,
28/4*3+28&4 //我只得这样是可以算出来的但是用变量的话是怎么搞。。
够28人喝?假如是50人,又需要买多少瓶可乐?(需写出分析思路)
用变量的话怎么搞
作者:
破烂小白
时间:
2015-5-14 18:41
或者说有其他方法不?
作者:
破烂小白
时间:
2015-5-14 18:47
。。。这个答案是 25瓶不。。
作者:
破烂小白
时间:
2015-5-14 19:21
难道是我问的比较弱?
作者:
tanzhixue
时间:
2015-5-14 21:03
这个虽然比较繁琐,但是比较易懂
class PingGai
{
public static void main(String[] args)
{
ping();
}
public static void ping()
{
int huan=0;;
int ping=0;
int mai=0;
while(ping<=28)
{
if(ping%3==0)//瓶子够了3瓶就能换一次
{
huan++;
}
ping++;
mai=ping-huan;
}
System.out.println(mai);
}
}
作者:
xiao7181jun
时间:
2015-5-14 21:06
本帖最后由 xiao7181jun 于 2015-5-14 21:19 编辑
<blockquote>/*需求:28人买可乐喝,3个可乐瓶盖可以换一瓶可乐,那么要买多少瓶可乐,
复制代码
作者:
xiao7181jun
时间:
2015-5-14 21:20
本帖最后由 xiao7181jun 于 2015-5-14 21:25 编辑
/*需求:28人买可乐喝,3个可乐瓶盖可以换一瓶可乐,那么要买多少瓶可乐,
* 够28人喝?
* 分析:
* 首先设置 买的 int x=0;与 送的 int y=0; 两个变量。
* 主要算法是遇到3和3的倍数,倍数就加1.
* 使用while循环语句(因为循环多少次不确定 所以用这个)
* 再循环语句中设置 买的 x++ 与送的y=(x+y)/3 ,的和为28即可。
* (x+y)/3的意思是只要买的瓶盖与送的瓶盖是3的倍数,就能给y赋值,就是说再买一瓶。(提醒:因为y是int类型,除不尽的话就取整数)
* 然后设一个判断条件(用 if语句),如果x+y == 28就返回。
* */
public class KeLe2 {
public static void main(String[] args) {
int x=0;
int y=0;
while(x<28) {
x++;
y =(x+y)/3;
if(x+y == 28) {
break;
}
}
System.out.println("买可乐:"+x+"送可乐:"+y);
}
}
复制代码
作者:
redlake
时间:
2015-5-14 22:10
class Test1
{
/*
比较笨的方法,假设买x瓶可乐能满足sum人喝,则当sum=28时,打印出x即可。
free:每一次兑奖的瓶数。last:每一次剩下的不能兑奖瓶数。
把买的可乐和每一次兑奖的可乐加起来就是可乐总数。
*/
public static void main(String[] args)
{
show(28);
//show(50);
}
public static void show(int tol)
{
int free=0,last=0, sum=0;
int x=1,m=0;
while(sum<tol)
{ for (sum=x,m=x,free=m;m>=3 ; )//只要每一次兑奖的瓶数和剩下的大于等于3,就能兑奖,否则退出循环。
{
free=m/3;
last=m%3;
m=last+free;
sum+=free;
}
System.out.println("买x瓶可乐可满足几人喝:"+x+" "+sum);
x++;//递增
}
System.out.println(sum+"人至少需要买:"+(x-1));//结束的时候x多加了1
}
}
复制代码
抛砖引玉,有更多好方法大家交流以下!:D
作者:
浪死歌
时间:
2015-5-14 22:16
第一个我就没看懂
作者:
liyuer
时间:
2015-5-15 00:32
有点难啊,
没有思路呢
作者:
sxsxsx
时间:
2015-5-15 11:09
答案是多少呢
作者:
yaoyeqing
时间:
2015-12-5 22:43
package com.heima.test;
/*
* *Test10--28人买可乐喝,3个可乐瓶盖可以换一瓶可乐,
* 那么要买多少瓶可乐,够28人喝?假如是50人,又需要买多少瓶可乐?
*
* ping gai ren
* 1 1 1
* 2 2 2
* 3 3 4
* 4 4(1pin)
* 6 6(2pin) 8
* 19 19+6+2+1
*
* */
public class Test10 {
public static void main(String[] args) {
int pin = 0;
int ren = 28;
for(int i = 1; ; i++){
pin = 0;
pin = change(i);
if(i+pin >= ren){
System.out.println(i);
break;
}
}
}
//瓶盖能换多少瓶汽水用递归
public static int change(int num){
int pin = 0;
int gai = 0;
if(num < 3){//当剩下的瓶盖小于3就返回兑换了多少瓶
return pin;
}
else{
pin = num/3; //第一次能兑换的瓶数
gai = num - pin*3 +pin;//剩下的盖子等于兑换的瓶子数+兑换后剩下的盖子数
pin = pin+change(gai);//剩下的盖子数再递归调用来求瓶子数
}
return pin;
}
}
复制代码
作者:
空白、
时间:
2016-8-15 10:34
666666,最好给个运行答案就好了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2