递归求全排列

来源:互联网 发布:多点触摸软件 编辑:程序博客网 时间:2024/05/22 16:39

#include <iostream>  
#include <iomanip>  
using namespace std; 

int x[6]={10,2,30,4,5,6}; 
static int count=0; 
/***********************************************************************
功能:全排列列举    
参数:k为第一个位置,m为数组长度  
返回:输出全排列
***********************************************************************/ 
void PaiLie(int k,int m) 

    if (k==m) 
    { 
        count++; 
        for (int i=0;i<m;i++)//输出结果  
        { 
            cout<<setw(3)<<x[i]; 
        } 
        cout<<endl; 
    } 
    else 
    { 
        for (int i=k;i<m;i++) 
        { 
            swap(x[i],x[k]); 
            PaiLie(k+1,m); //下一个排列  
            swap(x[i],x[k]);//恢复  
        } 
    } 

//主函数  
int main() 

    PaiLie(0,6); 
    cout<<"总共得个数为:"<<count<<endl; 
    return 0; 

原创粉丝点击