您好我正在为C ++做一个任务,遗憾的是我的老师不能教我任何关于C ++的知识,所以我不得不求助于互联网来帮助我。
我很欣赏输出列表的所有排列的简单方法,例如,如果列表x有3个不同的值[1,2,3],输出= [1,2,3] ,[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]等...列表不一定有按顺序,只需要在列表中输出1,2,3的所有不同组合。就这样。 我已经在网上找了解如何做到这一点,没有多少运气理解。我已经看到人们使用向量和其他一些我对0%理解的东西。我喜欢复制并粘贴其他人的代码,但这对于本课程或任何使用C ++的地方都无济于事,因为我是唯一一个自愿学习这门语言的人。所以请尽量以外行的方式解释。如果有帮助,我正在使用C ++ 11。
这就是我自己的意思
std::cout << "\nPart 2: Enter a list of 3 numbers, press enter after each value: \n";
std::list<int> mylist1;
int v1;
int v2;
int v3;
std::cin >> v1 >> v2 >> v3; //input that will go into the list
mylist1.push_front(v1);
mylist1.push_back(v2);
mylist1.push_back(v3);
答案 0 :(得分:0)
有一个功能,它被称为next_permutation
。
#include <algorithm>
#include <vector>
#include <iostream>
void show(const std::vector<int> &vtr) {
for (auto val : vtr) std::cout << val << " ";
std::cout << "\n";
}
int main() {
std::vector<int> vec{ 12,1,6,4,0 };
std::sort(vec.begin(), vec.end());
show(vec);
while (std::next_permutation(vec.begin(), vec.end())) {
show(vec);
}
}