龙空技术网

Java编程解决“李白沽酒”问题

爱吃土的程序员 297

前言:

现时咱们对“java分酒问题算法”大体比较讲究,各位老铁们都想要知道一些“java分酒问题算法”的相关知识。那么小编也在网络上搜集了一些对于“java分酒问题算法””的相关内容,希望我们能喜欢,姐妹们快快来了解一下吧!

先来看下著名的“李白沽酒”问题:

李白提壶去买酒,遇店加一倍,见花喝一斗;三遇店和花,喝光壶中酒。试问壶中原有多少酒?

对于这道题,用数学知识挺好解决的:

设壶中原有x斗酒,由题意得:2[2(2x-1)-1]-1=0解得x=7/8

列个方程就搞定,so easy!

学以致用,那我们就用java编程来解决。

分析:

遇到店,将酒加一倍,遇到花,喝一斗酒。经过逆推理,也就是当第三次遇到店和花之前,壶中有酒0.5斗,即壶中加酒1斗后,再除以2。那么当第二次遇到店和花之前,壶中酒为0.75斗,即壶中酒1斗除以2后,再加1斗……以此类推,可以得出以下的代码模型:

壶中有酒x=0斗for(int i = 3; i > 0; i-- ){遇花喝一斗x=x+1遇店加一倍x=x/2}

有了模型,我们就可以敲代码了,这是完整代码截图:

把题目改成李白“十遇店和花”、“百遇店和花”呢?假如李白没有醉倒在街边上,走完全程。我们只需要修改循环条件,就可以求出李白壶中原来的酒有多少。

更多资讯私信回复学习了解

标签: #java分酒问题算法