编程解决实际问题,关于此问题若有更好的算法思路,欢迎提出,共同讨论!
import lombok.Data;
/**
* @author yanzy
* @date 2018/9/3 下午3:16
* @description 现有10元,每瓶饮料2元;2个空瓶换一瓶饮料;4个瓶盖换一瓶饮料;总共能喝多少瓶?
*/
@Data
public class BottleCapExample {
private int totalAmount;
private int unitPrice;
private int count;
public BottleCapExample(int totalAmount, int unitPrice) {
this.totalAmount = totalAmount;
this.unitPrice = unitPrice;
}
public int getCount(){
int originBottle = totalAmount/unitPrice;
int originCap = totalAmount/unitPrice;
int restBottle = originBottle % 2;
int restCap = originCap % 4;
int extendCount = originBottle / 2 + originCap / 4;
count = originBottle;
int i = 1;
while((restBottle + extendCount)/2 > 0 || (restCap + extendCount)/4 > 0){
count += extendCount;
originBottle = restBottle + extendCount;
originCap = restCap + extendCount;
restBottle = originBottle % 2;
restCap = originCap % 4;
extendCount = originBottle / 2 + originCap / 4;
System.out.println(String.format("第%s次迭代, originBottle:%s, originCap:%s\t\n", i, originBottle, originCap));
++i;
}
return count;
}
public static void main(String[] args) {
BottleCapExample bottleCapExample = new BottleCapExample(10, 2);
System.out.println(bottleCapExample.getCount());
}
}