n選m全排列生成

#include<bits/stdc++.h>

int a[] = {19,2,38,46,5,64,7,81,92,10,11,12,13,14,15};
int cnt = 0;

void f(int m){
    std::cout<<"cnt="<<cnt<<".";
    for( int i = 0; i < m; ++i)
        std::cout<<a[i]<<" ";
    std::cout<<"\n";
}
//n歌數中選m個數生成全排列
void p(int i, int j,int m){
    if( i ==  m){
        ++cnt;
        f(m);
        return;
    }
    else{
        for( int k = i; k < j; ++k){
            std::swap(a[i],a[k]);
            p(i+1,j,m);
            std::swap(a[i],a[k]);
        }
    }
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章