在大学时我遇到过这个问题,我似乎无法找到答案(这不是一个家庭作业,只是一个谜语)。 假设您已在图灵机中输入:
01001101(8位序列)
如何计算此类输入中最大的子序列并获得正确的输出2#01001101? (2因为彼此相邻有两个)。
我可以正确计算和编写第一个子序列,所以我在磁带上有这个:
1#01001101
但是我不知道如何计算其他子序列,而不是用较低的数字(最后一个子序列)覆盖结果。你有什么想法吗?
编辑:只能使用一个临时磁带。
答案 0 :(得分:1)
这在概念上很容易,但是编程非常麻烦(就像图灵机上的任何非常重要的事情)。以下是算法的概述:
这实际上是简单算法的翻译:
N = Max = 0
for all x in the input:
if x == 0:
N += 1
else:
Max = max(N, Max)
N = 0
output Max
其中变量被临时磁带替换。
答案 1 :(得分:-2)
4294967289,这就是答案,不要相信我只是尝试在图灵上添加1号,它会说数字太大