Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/99.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_Hashmap_Dynamic Programming - Fatal编程技术网

Algorithm 形成目标词的最小贴纸数算法

Algorithm 形成目标词的最小贴纸数算法,algorithm,hashmap,dynamic-programming,Algorithm,Hashmap,Dynamic Programming,这里有一个算法问题:我们有一个目标词(即“历史”),我们有一些“贴纸”:(即“数学”、“英语”、“故事”)。每个贴纸都有无穷多个标签。我们希望找到构成目标词的最小贴纸数量 贴纸实际上是一组字母。我们可以拆分一张贴纸以使用单个字母。对于目标“历史”,我们可以使用标签“英语”中的“故事”和“h,i”(两个字母)来获取“历史”。因此,对于“历史”,使用的最小贴纸数量为2(“故事”+“英语”) 我使用的是Java,所以我想用HashMap来表示每个字母出现的目标单词。然后使用回溯法尝试各种可能的贴纸组合

这里有一个算法问题:我们有一个目标词(即“历史”),我们有一些“贴纸”:(即“数学”、“英语”、“故事”)。每个贴纸都有无穷多个标签。我们希望找到构成目标词的最小贴纸数量

贴纸实际上是一组字母。我们可以拆分一张贴纸以使用单个字母。对于目标“历史”,我们可以使用标签“英语”中的“故事”和“h,i”(两个字母)来获取“历史”。因此,对于“历史”,使用的最小贴纸数量为2(“故事”+“英语”)


我使用的是Java,所以我想用HashMap来表示每个字母出现的目标单词。然后使用回溯法尝试各种可能的贴纸组合。有没有更聪明的方法来解决这个问题,或者可以应用优化?

这听起来像是多集多核问题

也许本文的动态规划方法与您相关

除了动态规划:解决这个问题(当需要一个最优解时)的常见疑点是,并且具有巧妙的公式。甚至可能。我认为SAT是最有前途的方法,虽然不是完全微不足道的(因为目标中有多个相等的字符,并且因为无限可用性)。