gpt4 book ai didi

haskell - 如何在 Haskell 中记住一个以列表作为参数或返回值的函数?

转载 作者:行者123 更新时间:2023-12-01 16:04:33 24 4
gpt4 key购买 nike

我正在实现一个具有以下签名的函数来解决 Haskell 中的 0-1 背包问题。

knapsack :: [Item] -> Capacity -> [Item]

其中 ItemCapacity 文件定义为:

type Value = Int
type Weight = Int

type Capacity = Int

type Item = (Value, Weight)

我想记住它以获得更好的表演。我尝试使用 Data.MemoCombinators但我不知道如何让它工作。

你能给我一些提示吗?

最佳答案

我成功使用了MemoTrie对于这样的任务。要用作内存索引的每种类型都必须实现 HasTrie 。在您的情况下,您不必实现任何内容,因为该包已经提供了基本数据类型以及对和列表的实例。

import Data.MemoTrie

type Value = Int
type Weight = Int

type Capacity = Int

type Item = (Value, Weight)

knapsack :: [Item] -> Capacity -> [Item]
knapsack = memo2 knapsack'
where
knapsack' items capacity = ... -- your computation goes here

关于haskell - 如何在 Haskell 中记住一个以列表作为参数或返回值的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14085847/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com