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 动态规划-两个间谍在河边_Algorithm_Recursion_Dynamic Programming - Fatal编程技术网

Algorithm 动态规划-两个间谍在河边

Algorithm 动态规划-两个间谍在河边,algorithm,recursion,dynamic-programming,Algorithm,Recursion,Dynamic Programming,我认为这是一个非常复杂的动态规划问题 两名间谍在[1..m]中各有一个秘密号码。为了交换号码,他们同意在河边见面,并无辜地轮流扔石头:从一堆n=26个相同的石头中,每个间谍轮流向河里扔至少一块石头 唯一的信息是每个回合投掷的石头数量。最大的m是多少,这样他们就可以确定他们可以完成交换 开发一个递归计算公式。这是表格的开头;将其填写为n=26。你不应该期望一个封闭的表单 n 1 2 3 4 5 6 7 8 9 10 11 12 m 1 1 1 2 2 3 4 6 8 12 16 23 我们的教

我认为这是一个非常复杂的动态规划问题

两名间谍在[1..m]中各有一个秘密号码。为了交换号码,他们同意在河边见面,并无辜地轮流扔石头:从一堆n=26个相同的石头中,每个间谍轮流向河里扔至少一块石头

唯一的信息是每个回合投掷的石头数量。最大的m是多少,这样他们就可以确定他们可以完成交换

开发一个递归计算公式。这是表格的开头;将其填写为n=26。你不应该期望一个封闭的表单

n 1 2 3 4 5 6 7 8 9 10 11 12

m 1 1 1 2 2 3 4 6 8 12 16 23
我们的教授给了我们一些提示:我建议将问题改为下表:让Rn,m为数字[1..Rn,m]的范围,如果它们以n个石头开头,A可以向B表示,并且都知道A也必须从B接收[1..m]中的数字

例如,如果A不需要更多的信息,Rn,1可以通过考虑A可以扔多少石头来计算,然后B认为1如果还有,A可以再次决定。基本情况是R0,1=R1,1=1,如果小心边界,可以编写递归规则。你应该找到Rn,1的斐波那契数

如果A需要信息,那么B必须通过他或她的选择发送信息,所以事情就稍微复杂一些。以下是表格的开头:

n\ m  1     2     3     4     5

0     1     0     0     0     0

1     1     0     0     0     0

2     2     0     0     0     0

3     3     1     0     0     0

4     5     2     1     0     0

5     8     4     2     1     1

6    13     7     4     3     2

7    21    12     8     6     4

8    34    20    15    11     8

9    55    33    27    19    16

从Rn,m表中,如何恢复前面表中的条目?该表显示m是n的函数?

我不太理解这个问题。要传达给另一个间谍的秘密号码是扔到河里的石头总数?@Codor根据我的理解,这个秘密号码是由扔石头的顺序表示的。考虑间谍有3块石头。他可以:在第一个回合中投三个3-0-0,或一个,然后投两个1-2-0或1-1-1或2-1-0。用三块石头,他可以交换1到4之间的数字。请放大你的例子。哪个选项对应于要提交的数字?@Codor,编码没有定义,但您可以使用字典顺序将抛出序列与数字进行映射:1-1-1=>1,1-2-0=>2,2-1-0=>3,3-0-0。这只是一个例子,我们的间谍可以选择他们想要的任何东西:@Rerito扔石头根本不允许另一个神秘贩子继续,这可能就是为什么n=3的m被引用为1而不是4。