• Lec5输出全排列问题


    分析:

    设R= {r1,r2,r3,……,rn}是要进行排列的n个元素,Ri=R-{ri}。集合X中的元素的全排列记为perm(X).(ri)perm(X)表示在全排列perm(X)的每一个排列前加上前缀ri得到的排列,R的全排列可归纳定义如下:

    当n=1,perm(R) = (r) ,其中r是集合R中唯一的元素。

    当n>1,perm(R)由(r1)perm(R1),(r2)perm(R2),……,(rn)perm(Rn)构成。

    #include <iostream>
    using namespace std;

    void swap(int a[], int i, int j)
    {
         
    int temp = a[i];
         a[i] 
    = a[j];
         a[j] 
    = temp;
    }

    void perm(int a[], int start, int end)
    {
          
    int i;
          
    if(start == end)
          {
             
    for(i = 0; i <= end; i++)
                cout 
    << a[i] << " ";
             cout 
    << endl;
          }
          
    else
            {
                
    for(i = start; i <= end; i++
                { 
                     swap(a,start,i);
                     perm(a,start 
    + 1,end);
                     swap(a,start,i);      
                }    
            }
    }

    int main(void)
    {
        
        
    int a[3= {1,2,3};
        perm(a,
    0,2);
        
        system(
    "pause");
        
    return 0;    
    }
  • 相关阅读:
    Java1:Chapter2
    Java1:Chapter1
    Java1:Chapter11
    Java1:Chapter8
    Java1:Chapter6
    Android day 03
    Android day02
    Android day01
    二进制文件的读写
    字符流
  • 原文地址:https://www.cnblogs.com/avril/p/2036643.html
Copyright © 2020-2023  润新知