有一个数组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个数,
怎么设计这个算法比较简单有效呢?

解决方案 »

  1.   


    可是我下面也说了啊,这个数组的个数是不固定的,我也不知道几个数啊,
    要是ABCDEFG,我得写多少循环啊?
      

  2.   

    学MFC的不用学数据结构与算法的?
    这个大二就该会写了
      

  3.   


    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);           }    }}