求组合的算法问题
資深大佬 : crella 1
已知列表 A 是 1 到正整数 M 之间所有整数的集合,B 是一个列表,它所有元素之和等于 M,且每个元素皆大于等于 1 。
求把列表 A 按照列表 B 的每个元素所代表的长度来分组的情况。
求把列表 A 按照列表 B 的每个元素所代表的长度来分组的情况。
比如 A=range(1,6),B=[2,2,1,1]。那么可能的分组情况如下:
[[1,2],[3,4],5,6]
[[4,5],[1,3],2,6]
……
其中每个组内的元素是无序的,比如[4,5]==[5,4]。
想了一下,发现我把自己绕晕了;如果只是单独的去重,感觉比较慢,当 M 很大的时候,去重的比较的时间就可能是无底洞了。用动态规划,我又把握不好前后的条件要怎样搞。
请各位大佬指点。
大佬有話說 (14)