1.问题描述:
k个瓶子可以换1瓶酒,要喝n瓶酒,最少需要买多少瓶酒?
2.思路
这个题最后的思路其实就是:我一瓶一瓶买,买一瓶喝一瓶,喝一瓶就一个空瓶子,喝到有k个空瓶我就去换一瓶,然后继续一瓶一瓶买...直到最后我喝了n瓶就完事了。
3.问题解答
public class PingZi {
public static void main(String[] args) {
System.out.println(test(3, 5));
}
/**
* @param k k瓶换一瓶
* @param n 喝了n瓶子
* @return 买了几瓶
*/
public static int test(int k, int n) {
if (k < 0 || n < 0) return -1;
if (k >= n) return n;
//买的瓶数
int buy = 0;
//当前的瓶数
int current = 0;
//喝的瓶数
int drink = 0;
while (drink < n) {
if (current == k) {
current = 1;
} else {
current++;
buy++;
}
drink++;
}
return buy;
}
}
网友评论