关于全排列
Posted new-ljx
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于全排列相关的知识,希望对你有一定的参考价值。
嗯...
关于全排列,有很多种种做法...
嗯....
那什么叫全排列呢??!!
从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 为找到当前上一个的排列是什么
可以自己调试一下....
以上是关于关于全排列的主要内容,如果未能解决你的问题,请参考以下文章