數的排列的遞歸實現-C++ STL實現

jopen 9年前發布 | 1K 次閱讀 C/C++

    #include <iostream>

#include <vector>  
#include "iterator"  
#include "algorithm"  
#include "string"  
#include "stdio.h"  
using namespace std;  
ostream_iterator<int> oi(cout,"");  
int icount = 0;  
void pailie(vector<int> vectNum,vector<int> &result,int start, int n)  
{  
    if(start == n) {  
        //copy(result.begin(),result.end(),oi);  
        //cout<<" ";  
        icount++;  
        return;  
    };  
    int i;  
    for(i=0;i<vectNum.size();i++){  
        result[start] = vectNum[i];  
        vector<int> vectNew = vectNum;  
        vectNew.erase(vectNew.begin()+i);  
        pailie(vectNew,result,start+1,n);  
    }  
}  
void pailie(vector<int> vectNum,vector<int> &result, int n)  
{  
    if(vectNum.size()<n) return;  
    pailie(vectNum,result, 0, n);  
}  

void main()  
{  
    int a[9] = {1,2,3,4,5,6,7,8,9};  
    vector<int> vectNum(a,a+9);  
    int n=6;  
    vector<int> result(n);  
    pailie(vectNum, result,n);  
    cout<<endl<<icount<<endl;  
}  </pre> 


 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!