【算法】k个瓶子可以换1瓶酒,要喝n瓶酒,最少需要买多少瓶酒?

2019-03-05  本文已影响2人  浅浅星空

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;
    }

}
上一篇 下一篇

猜你喜欢

热点阅读