递推迭代演算法浪费资源,直接用m=4k-5运算即可;

喝的总瓶数m=4*初次瓶数k-5,详细过程参见我的解答(点击我的用户名,最下方的那条解答)。

4块钱能喝3瓶;

6块钱能喝7瓶;

8块钱能喝11瓶;

10块钱能喝15瓶;

12块钱能喝19瓶;

14块钱能喝23瓶;

16块钱能喝27瓶;

18块钱能喝31瓶;

20块钱能喝35瓶;

30块钱能喝55瓶;

40块钱能喝75瓶;

50块钱能喝95瓶;

60块钱能喝115瓶;

70块钱能喝135瓶;


钱 酒 空 盖 累计

10 0 0 0 0 0 5 0 0 5 0 0 5 5 5 0 3 1 1 8

0 0 4 4 8

0 3 0 0 11 0 0 3 3 11 0 1 1 3 12 0 0 2 4 12 0 2 0 0 14 0 0 2 2 14 0 1 0 2 15 0 0 1 3 15 0 1 0 1 16 (俩瓶盖相当于一空瓶)

0 0 1 2 16

0 1 0 0 17 0 0 1 1 17 0 1 0 -1 18 (欠一个盖) 0 0 1 0 18 0 1 -1 0 19 (欠一个空瓶) 0 0 0 1 19 0 1 -1 -1 20 (欠一个空瓶和一个盖) 0 0 0 0 20 (喝完最后一瓶,还清欠账)

另一种方法,设每个空瓶 x 元,每个盖 y 元,每瓶酒(不含空瓶和盖)z 元,那么

x + y + z = 2 (每瓶酒 2 元,包括空瓶和盖)

2x = 2 (俩空瓶换一瓶酒)4y = 2 (四个盖换一瓶酒)

所以,x = 1,y = 0.5,z = 0.5

10 / 0.5 = 20(瓶)

BTW:如果卖酒老板不同意借空瓶和盖……

如果老板不同意借空瓶和盖,那么可以先要 20 瓶酒,喝完了,放下 10 元钱,然后拍屁股走人。

一个瓶盖五角,一个空瓶一元,一瓶酒五角,粗线条地算是二十瓶。但是事情不会那么简单。

仔细看,十元买五瓶,得五个空瓶和五个瓶盖(5);四个空瓶换两瓶,四个瓶盖换一瓶,现在手上有三瓶酒和一个空瓶,一个瓶盖(8);喝掉之后拿四个空瓶换两瓶,四个瓶盖换一瓶(11);喝掉三瓶酒剩三个空瓶和三个瓶盖,用两个空瓶换一瓶酒(12);喝掉那一瓶酒,有了两个空瓶和四个瓶盖,可以换来两瓶酒(14);两瓶酒喝掉剩两个空瓶和两个瓶盖,可以换一瓶酒(15);一瓶酒喝掉,剩一个空瓶和三个瓶盖,价值2.5元,前面喝掉的15瓶酒价值7.5元,加起来共10.00元。所以一共可以喝15瓶酒。
假如能喝x瓶, 那么x/4 + x/2 + 10/2 = x 解出 x=20 OK
卖酒老板不同意借空瓶和盖 15瓶 否则20瓶


推荐阅读:
相关文章