Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.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_String_Probability_Combinatorics_Counting - Fatal编程技术网

Algorithm 组合数学还是另一种方法?

Algorithm 组合数学还是另一种方法?,algorithm,string,probability,combinatorics,counting,Algorithm,String,Probability,Combinatorics,Counting,我最近读到,首先,我想到了一种组合方法,但似乎没有人——包括参赛者——提出过这样的解决方案。使用组合数学的解决方案可行吗?如果没有,解决方案是什么? 简单地说,问题是:给定一个由M个单词组成的字典,其中任意两个单词都可以连接在一起,并且可能会相互重叠一些字母,找出该字典可以组成多少个长度为N的字符串。 组合方法的下行极限为M!,然后,对于每两个连续的单词,您应该尝试将它们相交。我就是这么想的。我怀疑它会起作用。请帮忙?不要把组合数学和蛮力混为一谈。这显然是一个组合计数问题,但时间限制也排除了任何

我最近读到,首先,我想到了一种组合方法,但似乎没有人——包括参赛者——提出过这样的解决方案。使用组合数学的解决方案可行吗?如果没有,解决方案是什么? 简单地说,问题是:给定一个由M个单词组成的字典,其中任意两个单词都可以连接在一起,并且可能会相互重叠一些字母,找出该字典可以组成多少个长度为N的字符串。
组合方法的下行极限为M!,然后,对于每两个连续的单词,您应该尝试将它们相交。我就是这么想的。我怀疑它会起作用。请帮忙?

不要把组合数学和蛮力混为一谈。这显然是一个组合计数问题,但时间限制也排除了任何暴力解决方案

我想你可以用dinamic编程来解决这个问题。例如,假设我们的子字符串是“CAT和TCAT”,我们需要覆盖一个大小为100的单词

如果我们以“猫”开头,我们还剩下97个字母 如果我们以“TCAT”开头,我们还有96个字母

因此,如果f(n)是大小为n的匹配的解的数目,我们将得到f(100)=f(97)+f(96)


但是,请注意,这显然过于简化,而且还不够-您还需要涵盖字符串重叠的情况,并确保不会对同一解决方案进行两次计数。

如果忽略重叠,这就是子集和问题。考虑到重叠,如果你将重叠的组合替换为它们的串联,你会得到一组不可能重叠的单词,然后如果你将字符串替换为它们的长度,然后想找到加起来等于N的和,这正是子集和的问题。

您应该尝试在这里总结相关要点。这样,我们就不会被迫跟随一个链接,破译一个故意误导的问题陈述,其中充满了无关和分散注意力的信息。(另外,问题的标题可以更具体)很抱歉给您带来不便,我将对问题进行总结。谢谢你的建议:d我要开始的方向是找出我的单词到底是如何重叠的。哎呀,误读了这个问题,这行不通。