Может ли кто-нибудь помочь мне создать все подмножества данного набора?
Пример: если у меня есть [2,3,4] и я хочу, чтобы K=2, это означает, что мне нужны пары из двух => [[2,3], [3,2], [2,4], [4]. ,2], [3,4], [4,3]]
Я написал этот код, но он генерирует только количество подмножеств:
arrange::Int->Int->Int
arrange n 1=n
arrange n r=n*arrange (n-1) (r-1)
Другая версия, но она не генерирует все решения подмножеств:
arrange 0 _ =[[]]
arrange _ []=[]
arrange n (x:xs)=(map(x:)) (arrange (n-1) xs)++
(arrange n xs)
delete
, вы должны включатьEq a
везде, где вы его используете (включая мойarrange
), но есть способ (очевидный) написатьpermutations
без удаления;) - но ваш в порядке - просто добавьте ограничения 17.05.2015pick 2 [1,2,3] = [[1,2],[1,3],[2,3]]
27.08.2017