scala – 生成可能的组合
发布时间:2020-12-16 09:09:25 所属栏目:安全 来源:网络整理
导读:我有几个哈希映射,我需要生成以下组合: A: [x-1,y-2,...]B: [x-1,a-4,...]C: [x-1,b-5,...]... 一些可能的组合: A+B; A; A+C; A+B+C... 对于每个组合,我需要生成联合散列映射,并在两个散列映射中使用相同的键执行键值对的操作. 我能想到的就是使用二进制计
我有几个哈希映射,我需要生成以下组合:
A: [x->1,y->2,...] B: [x->1,a->4,...] C: [x->1,b->5,...] ... 一些可能的组合: A+B; A; A+C; A+B+C... 对于每个组合,我需要生成联合散列映射,并在两个散列映射中使用相同的键执行键值对的操作. 我能想到的就是使用二进制计数器并将数字映射到相应的哈希映射: 001 -> A 101 -> A,C ... 虽然这个解决方案有效,但当我有超过100个哈希映射时,模运算很耗时.我是Scala的新手,但我相信必须有更好的方法来实现这一目标吗? 解决方法
好吧,想想你的地图有多少组合:假设你有N个地图.
(the maps individually) + (pairs of maps) + (triples of maps) + ... + (all the maps) 这当然是 (N choose 1) + (N choose 2) + ... + (N choose N-1) 其中N选择M定义为: N! / (M! * (N-M)!) 对于N = 100和M = 50,N选择M超过100,000,000因此“耗时”实际上并不能解决问题! 哦,这假设排序是无关紧要的 – 即A B等于B A.如果这个假设是错误的,那么你所面临的排列明显多于可见宇宙中的粒子 为什么scala可能会帮助解决这个问题:它的并行集合框架! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |