EllysBulls

作者:刘子祯 汪乐平

关键词:字符串 搜索

题目描述

给一个个长度为的字符串组成的数组和一个个自然数组成的数组,求是否有且仅有一个长度为的字符串,满足,都有

,所有字符串只包含数字。

算法一

这道题就是一个暴力搜索,使用dfs进行搜索,但是直接枚举所有情况肯定不行,这需要进行剪枝,然后才能通过。 剪枝是这样的: 如果当前已经确定的部分超出了一些字符串的符合个数,则说明这个字符串一定不是结果,就直接return,停止下一层递归。 如果在假定后面没搜到的字符都符合的情况下依然不够,也可以说明这不是结果,直接return,停止下一次递归。 排序,先枚举出现多的,再枚举出现少的。

算法二

额……搜索,复杂度还没有保证,这么不优美的算法怎么可能是最优算法呢?下面讲一种复杂度有保证的算法。

我们使用。令,枚举所有长度为的数字串,对每个串求一个元组,其中。再枚举所有长度为的数字串,对每个串求一个元组,其中。那么,如果我们能找到一对,使得,则是一个合法的解(表示接在后面得到的字符串)。

所以我们要做的就是对于任意一个,求有多少个满足。我们把元组看成字符串,用一棵树来保存信息即可。求一次的时间是,一共有,所以总的时间复杂度是。如果用搜索求所有,则时间复杂度可以降为。空间复杂度

results matching ""

    No results matching ""