1. 程式人生 > >演算法:1~n的排列

演算法:1~n的排列

用遞迴的思想:先輸出以1開頭的排列,然後以2開頭的排列,以此往下,一直到n


#include<iostream>
using namespace std;  

void per(int *a,int n,int cur){  
    if(cur==n){       //0時無輸出
        for(int i=0;i<n;i++)
        cout<<a[i];
        cout<<endl;  
    }  
    else {  
        for(int j=1;j<=n;j++){    //填數
            int
ok=1; for(int k=0;k<cur;k++){ if(a[k]==j){ //出現過,則不能再選 ok=0; } } if(ok){ a[cur]=j; per(a,n,cur+1); } } } } int
main(){ int n; cin>>n; int *a=new int[n]; per(a,n,0); }

輸入
3
輸出
123
132
213
231
312
321