我有一些载体。 我想找到每个向量的所有排列。 它的工作原理相当不错,当值是唯一的但是如果有重新出现的值则它会混乱。
我有以下载体
vector<string> present = {"Schaukelpferd","Schaukelpferd","Puppe","Puppe"};
vector<string> children = {"Jan","Tim","Alex","Daniel"};
vector<int> houses = {4,5,5,5};
我在使用next_permutation()
sort(present.begin(),present.end());
sort(children.begin(),children.end());
sort(houses.begin(),houses.end());
do {
present_perm.push_back(present);
} while (next_permutation(present.begin(), present.end()));
do {
children_perm.push_back(children);
} while (next_permutation(children.begin(), children.end()));
do {
houses_perm.push_back(houses);
} while (next_permutation(houses.begin(), houses.end()));
children
效果很好,但是现场以及房屋不能按预期工作
子项返回24
排列,正如预期的那样,仅返回6
,而房屋只返回4
。我希望所有人都返回24
,因为所有向量都有4
个元素(4! = 24
)。
答案 0 :(得分:0)
考虑四个整数值4,5,5,5。四种可能的排列是4,5,5,5和5,4,5,5和5,5,4,5和5,5,5 ,4。就是这样。三个5具有相同的值,因此它们不能彼此区分。该算法不会跟踪哪些值最初出现在另一个之前;他们是一样的。同样适用于present
:有三个不同的值,而不是四个。