405,換酒問題

2022-09-18 09:48:13 字數 2014 閱讀 1611

小區便利店正在**,用 numexchange 個空酒瓶可以兌換一瓶新酒。你購入了 numbottles 瓶酒。

如果喝掉了酒瓶中的酒,那麼酒瓶就會變成空的。

請你計算最多能喝到多少瓶酒。

示例 1:

輸入:numbottles = 9, numexchange = 3

輸出:13

解釋:你可以用 3 個空酒瓶兌換 1 瓶酒。

所以最多能喝到 9 + 3 + 1 = 13 瓶酒。

示例 2:

輸入:numbottles = 15, numexchange = 4

輸出:19

解釋:你可以用 4 個空酒瓶兌換 1 瓶酒。

所以最多能喝到 15 + 3 + 1 = 19 瓶酒。

示例 3:

輸入:numbottles = 5, numexchange = 5

輸出:6

示例 4:

輸入:numbottles = 2, numexchange = 3

輸出:2

問題分析類似這種題估計很多人都見過,一般是作為一道腦筋急轉彎的題出現,我們就以示例4為例來說下,如果3個空瓶子可以換一瓶酒的話,我們只有兩瓶酒,喝完之後最多只有兩個空瓶子,所以是換不成一瓶酒的。但如果我們找別人借乙個空瓶子的話,正好是3個空瓶子,可以換一瓶酒,喝完之後再把這個空瓶子還給別人,所以我們可以喝3瓶酒,作為一道腦筋急轉彎題這是正確的,但這道題答案返回的是2,也就是說我們不能找別人借。

我們假設乙個空瓶子的價值是1,那麼一瓶酒(不包含瓶子)的價值就是numexchange-1。我們最初所擁有的總價值就是numbottles* numexchange,因為不能找別人借,所以最後我們至少會有乙個空瓶子,也就是說最後我們所能喝到的最大價值<=numbottles* numexchange-1,我們能喝的到酒的數量就很容易算出來了。

public

intnumwaterbottles

(int numbottles,

int numexchange)

另一種解法每次喝完之後如果空瓶子數量大於等於numexchange,我們就把他兌換成酒,這個時候我們所擁有的瓶子數量就是我們兌換成酒的瓶子數量加上沒有兌換成酒的瓶子數量,如果還大於numexchange就繼續迴圈……,直到不能兌換為止。

public

intnumwaterbottles

(int numbottles,

int numexchange)

return total;

}

總結這道題和腦筋急轉彎題型還是有點區別的,如果空瓶子數量不夠的情況下我們是不能借的,這兩種解法都比較簡單。

1518 換酒問題

小區便利店正在 用 numexchange 個空酒瓶可以兌換一瓶新酒。你購入了 numbottles 瓶酒。如果喝掉了酒瓶中的酒,那麼酒瓶就會變成空的。請你計算 最多 能喝到多少瓶酒。示例 1 輸入 numbottles 9,numexchange 3 輸出 13 解釋 你可以用 3 個空酒瓶兌換 ...

瓶子瓶蓋換酒問題

兩塊錢一瓶啤酒,四個蓋子可以換一瓶啤酒。2個瓶子可以換一瓶啤酒。問 如果手上有20塊錢,一共喝了多少瓶啤酒?拿所有的瓶子去換酒,更新瓶蓋數 更新瓶子數 更新總數 然後瓶蓋能換酒就一直換 更新瓶子數 更新瓶蓋數 更新總數class wine system.out.println result 把酒喝完...

貪心 換酒問題 js

小區便利店正在 用 numexchange 個空酒瓶可以兌換一瓶新酒。你購入了 numbottles 瓶酒。如果喝掉了酒瓶中的酒,那麼酒瓶就會變成空的。請你計算 最多 能喝到多少瓶酒。方法一 var numbottles 15 var numexchange 4 if numbottles nume...