【发布时间】:2016-04-26 21:53:29
【问题描述】:
我有这样的向量 v = {1, 0, 1} 我想将每个元素与其他元素交换并在每次两个元素被锯切时返回一个向量。对于此示例,解决方案应为:v1 = {0, 1, 1}, v2 = {1, 0, 1}, v3 = {1, 0, 1}。我确实喜欢他的,但我得到了相同的结果:
for (size_t i = 0; i < tempSol.size() - 1; ++i) {
for (size_t j = i + 1; j < solution.size(); ++j) {
swap(tempSol[i], tempSol[j]);
listSolution.push_back(tempSol);
}
}
结果是:v1 = {0, 1, 1} , v2 = {1, 1, 0}, v3= {1, 0, 1} 向量v2的差。感谢您的帮助
【问题讨论】:
-
您的问题不清楚。向量中有三个项目。你要交换哪些物品?你什么时候交换它们?你的“错误”答案和你的“正确”答案一样有意义。
-
我首先获取第一个元素并将其与所有其他元素交换,例如 i = 0, j = 1 我交换元素 swap(tempSol[0], tempSol[1])
-
您在寻找
std::next_permutation吗? (en.cppreference.com/w/cpp/algorithm/next_permutation) -
为什么您的结果应该是您发布的结果,而不是实际得到的结果?描述将导致您想要的解决方案的步骤。
-
鉴于此,您真正想解决什么问题?所有这些交换都必须有一个目的。到目前为止,我完全不明白你的描述——这可能是X-Y Problem 的一个例子