我试图在Haskell中实现Coin Change问题.问题如下:
给定一组硬币和这些硬币的无限供应,找到产生特定值所需的最小硬币数量,比如n.
我在haskell中编写了以下程序:
import Data.Vector ((!), generate)
import Control.Applicative
import Control.Monad
coins = [1, 5, 10, 25, 100] :: [Int]
coinchangev :: Int -> [Int] -> Int
coinchangev n cs = v ! n
where v = generate (n+1) f
f 0 = 0
f n = 1 + minimum [v ! x | x <- map (n-) cs, x >= 0]
main :: IO ()
main = do n <- read <$> getLine :: IO Int
putStrLn . …Run Code Online (Sandbox Code Playgroud)