一个简单的路径查找问题

这是网上的haskell99题中第81题

Problem 81

(**) Path from one node to another one

Write a function that, given two nodes a and b in a graph, returns all the acyclic paths from a to b.

Example in Haskell:

paths 1 4 [(1,2),(2,3),(1,3),(3,4),(4,2),(5,6)]
[[1,2,3,4],[1,3,4]]
paths 2 6 [(1,2),(2,3),(1,3),(3,4),(4,2),(5,6)]
[]
以前都是用C++来解决图论问题,现在用一个简单的Haskell程序更见清晰明了
paths :: Int -> Int -> [(Int , Int)] -> [[Int]]
paths start end  zs = let (xs,ys) = partition (/(_,z) -> z == end ) zs
                                  in  map (++ [ end] )  ( concat . map (/(e, _) -> if e == start then [[start]] else paths start e  ys) $  xs )
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值