标签:很多 操作 algorithm perm next div class size space
嗯...
关于全排列,有很多种种做法...
嗯....
那什么叫全排列呢??!!
从n个不同元素中任取m(m≤n)个元素,按照一定的顺序排列起来,叫做从n个不同元素中取出m个元素的一个排列。当m=n时所有的排列情况叫全排列。(来自度娘
在这里介绍全排列,主要是引进c++种STL库中的鬼畜东西:
next_permutation prev_permutation
这两个东西很冷门....但对于全排列来时却是十分好用....
下面就结合着代码做一道全排列来介绍这两个东西:
1 #include<cstdio> 2 #include<iostream> 3 #include<algorithm> 4 5 using namespace std; 6 7 int n,z[1234]; 8 9 int main() 10 { 11 cin >> n; 12 for (int a=1;a<=n;a++) 13 z[a] = a; 14 //注意在用 next_permutation和prev_permutation都要用do-while 循环,因为它不管是否满足,都要先将当前的排列进行一次输出操作 15 do 16 { 17 for (int a=1;a<=n;a++) 18 cout << z[a] << " "; 19 cout << endl; 20 }while (next_permutation(z+1,z+n+1));//右端点多1,左闭右开 21 }
好,上面主要介绍了next_permutation ,那么prev_permutation 是什么呢???
其实prev_permutation 就是与next_permutation做相反操作
next_permutation 为找到当前下一个的排列是什么
prev_permutation 为找到当前上一个的排列是什么
可以自己调试一下....
标签:很多 操作 algorithm perm next div class size space
原文地址:https://www.cnblogs.com/New-ljx/p/10345396.html