我有以下问题。我需要计算一组的排列;但是,该集合可能包含两个相同的元素,因此会导致重复的排列。例如:
给定集合[ 0 0 1 2 ]
,排列包括这些可能性:
1 2 0 0
1 2 0 0
但是,我想避免使用相同的排列。在MATLAB中我可以这样做:
unique(perms([ 0 0 1 2 ]), 'rows')
但问题在于效率 - 我在一个巨大的for
循环中反复这样做,unique
所需的排序太慢了。所以我的问题是:我可以直接直接计算这种性质的独特排列吗,而不必事后循环结果吗?我在MATLAB工作,但只是一个通用的解决方案可能会有所帮助,虽然可以在MATLAB中矢量化的东西可能是理想的!
据我所知,现有的问题并没有完全涵盖这个问题,但如果以前已经回答过,请道歉。