有一个数组X,里面保存了3个数,A,B,C,
我要怎么写这个循环,才能得到这3个数的所有顺序的排列呢?
我想得到:
A,B,C;
A,C,B;
B,A,C;
B,C,A;
C,A,B;
C,B,A。
就是把所有的组合都取得。
这个数组的个数是不固定的,也有可能是4个数,5个数,
怎么设计这个算法比较简单有效呢?
我要怎么写这个循环,才能得到这3个数的所有顺序的排列呢?
我想得到:
A,B,C;
A,C,B;
B,A,C;
B,C,A;
C,A,B;
C,B,A。
就是把所有的组合都取得。
这个数组的个数是不固定的,也有可能是4个数,5个数,
怎么设计这个算法比较简单有效呢?
可是我下面也说了啊,这个数组的个数是不固定的,我也不知道几个数啊,
要是ABCDEFG,我得写多少循环啊?
这个大二就该会写了
void all_sort(int *a, int len,vector<int> tmp){ if(len == 1) { for(size_t i = 0 ; i < tmp.size() ; i ++) cout<<tmp[i]; cout<<a[0]<<endl; } else { for(int i = 0 ; i < len ; i ++) { tmp.push_back(a[i]); swap(a[0],a[i]); all_sort(a + 1, len - 1,tmp); swap(a[0],a[i]); tmp.erase(tmp.end() - 1); } }}