有27个人要喝水,每三个空瓶子可以换一瓶水,问需要买多少瓶水,请用循环的方法写出来,递归还没学到那。请教
解决方案
10
public class Heshui { private static int counter = 0;//新水计数 private static int emptyCount = 0;//空瓶计数 public static void main(String[] args) { for (int i = 1; i <= 27; i++) { drink(i); } System.out.println("至少需要"+counter+"瓶水"); } public static void drink(int num){ System.out.println("第"+num+"个人喝水前空瓶数:"+emptyCount); if(emptyCount > 2){//换新水 emptyCount -= 2; System.out.println("第"+num+"个人用三个空瓶换了一瓶,喝水后空瓶数:"+emptyCount); return; } //拿新水 counter ++; emptyCount ++; System.out.println("第"+num+"个人拿了一瓶新水,拿的新水数:"+counter+",喝水后空瓶数:"+emptyCount); } }
这样的话是至少19瓶水,不知道有没有忽漏
10
赞一个
10
public class Csdn{
public static void main(String args[]){
System.out.println(Water(27));
}
public static int Water(int num){
int x=0,ex=0;
while(num>3){
num-=4;
x=x+3;//x是需要买的水的瓶数。
ex+=1;//ex是空瓶数量。
if(ex%3==0){
num=num-1;
ex=1;
}
}
if(num<=3){
if(num==3){
x=x+2;
}
else if(num==2){
if(ex==2){
x=x+1;
}
else if(ex==1)
x=x+2;
}
else
x=x+1;
}
return x;
}
}
public static void main(String args[]){
System.out.println(Water(27));
}
public static int Water(int num){
int x=0,ex=0;
while(num>3){
num-=4;
x=x+3;//x是需要买的水的瓶数。
ex+=1;//ex是空瓶数量。
if(ex%3==0){
num=num-1;
ex=1;
}
}
if(num<=3){
if(num==3){
x=x+2;
}
else if(num==2){
if(ex==2){
x=x+1;
}
else if(ex==1)
x=x+2;
}
else
x=x+1;
}
return x;
}
}
10
public class Main { public static void main(String[] arg) { int people = 24; int sum = 3; int flag = 3; while (people > 0) { if (flag % 3 == 0) { flag++; people--; } sum++; flag++; people--; } System.out.println(sum); } }