Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm m杯,倒水,图形算法,n=(a1+1)(a2+1)…(am+1)_Algorithm - Fatal编程技术网

Algorithm m杯,倒水,图形算法,n=(a1+1)(a2+1)…(am+1)

Algorithm m杯,倒水,图形算法,n=(a1+1)(a2+1)…(am+1),algorithm,Algorithm,这个问题困扰了我很长时间。我认为解决方案应该是图形算法。非常感谢 给定m杯c1;c2;cm,具有整数容量a1;a2;:;分别是美国职业棒球大联盟。你只被允许 要执行以下三种类型的操作: 完全装满一杯。 倒一杯。 将水从杯ci倒入杯cj,直到ci为空或cj为满。 从所有杯子都为空的状态开始,您希望达到最终状态 杯子c1有x毫升的水,而对于某些给定的x,所有其他杯子都是空的。设计一个算法,以找到所需的最小操作数或报告无法达到所需的最终状态。 您的算法必须在时间多项式中运行,n=a1+1a2+1:::

这个问题困扰了我很长时间。我认为解决方案应该是图形算法。非常感谢

给定m杯c1;c2;cm,具有整数容量a1;a2;:;分别是美国职业棒球大联盟。你只被允许 要执行以下三种类型的操作:

完全装满一杯。 倒一杯。 将水从杯ci倒入杯cj,直到ci为空或cj为满。 从所有杯子都为空的状态开始,您希望达到最终状态 杯子c1有x毫升的水,而对于某些给定的x,所有其他杯子都是空的。设计一个算法,以找到所需的最小操作数或报告无法达到所需的最终状态。
您的算法必须在时间多项式中运行,n=a1+1a2+1:::am+1。

假设c1的容量为5升,c2的容量为3升。它们的差值是2升。 因此,可通过以下步骤在任何杯子c1或c2中抽取2升水- 1加注c1,即5升。 2将其倒入c2中,直到装满。 3空c2。 你有32升的c1

对于这些m个杯子,您必须让m选择2=m/m-2!2! = m*m-1/2组合。 计算所有这些,并用操作将它们填入哈希表中。 因为2升可以是一个杯子的容量,也可以是2杯容量的差异。我们存储操作=1而不是3

现在我们有了一套无需任何操作就能容纳的所有可能的升水。 您只需从最小操作数集合中找到最小长度子序列即可