演算法:1~n的排列
阿新 • • 發佈:2019-01-05
用遞迴的思想:先輸出以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