题目
题目描述: 老李见和尚赢了自己的酒,但是自己还舍不得,所以就耍起了赖皮,对和尚说,光武不行,再来点文的。
你给我说出来1-8的全排序,我就让你喝,这次绝不耍你,你能帮帮和尚么?
输入描述:
无
1~8的全排列,按照全排列的顺序输出,每行结尾无空格。
解析
知识点
- 就是一道STL的模板题:next_permutation。
操作
- 这里用到了算法类函数next_permutation,这个函数就是让一个排列变成全排列的下一项。
- 对应的还有pre_permutation。
- 这个函数是有返回值的,如果换得了(没到倒序排列),就返回true。换不了了(已经是倒序了),就返回false。
- 所以我们用这个性质,在循环的时候就放ta。
打代码
- 初始化string为12345678。
- 然后STL全排列输出每种情况。
- 下面全代码~
AC代码
#include <iostream> #include <algorithm> #include <string> using namespace std; #define IOS ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); //代码预处理区 int main() { IOS; string s = "12345678"; do { for (int i = 0; i < 8; i++) { cout << s[i]; if (i != 7) cout << " "; } cout << endl; } while (next_permutation(s.begin(), s.end())); return 0; } //函数区