争取把每次遇到的添加进来
第一个: sort(); 默认对n个数进行从小到大排列
调用方法 sort(a,a+n); //n为需要排序的个数
#include<iostream> #include<algorithm> using namespace std; int main() { int a[4]={4,3,2,1}; sort(a,a+4); for(int i=0;i<4;i++) printf("%d ",a[i]); return 0; } //结果为1 2 3 4
第二个 : next_permutation 产生全排列的下一个数。
调用方法 next_permutation(a,a+n); //n为排列个数
#include<iostream> #include<algorithm> using namespace std; int main() { int a[3]={1,2,3}; int i; do { for(i=0;i<=2;i++) printf("%d ",a[i]); printf("\n"); }while(next_permutation(a,a+3)); return 0; }
然而对于结构体内某个值如何进行全排列呢。。
这里就要用到operator < 这个方法
下面是具体程序
#include<iostream> #include<algorithm> using namespace std; struct node { int x,y; int k; bool operator <(const node p)const { return k<p.k; } }a[10]; int main() { for(int i=0;i<3;i++) cin>>a[i].k; do { for(i=0;i<3;i++) printf("%d ",a[i].k); printf("\n"); }while(next_permutation(a,a+3)); return 0; }