思路:好好利用递归DFS。
1 #include<cstdio> 2 bool flag[100]={ 3 false 4 }; 5 int ans[100]; 6 void DFS(int i,int n,int level) 7 { 8 flag[i]=true; 9 if(level==n) 10 { 11 ans[level]=i; 12 for(int i=1;i<=n;i++) 13 { 14 if(i!=n) 15 printf("%d ",ans[i]); 16 else 17 printf("%d\n",ans[i]); 18 } 19 return ; 20 } 21 ans[level]=i; 22 for(int j=1;j<=n;j++) 23 { 24 if(!flag[j]) 25 { 26 DFS(j,n,level+1); 27 flag[j]=false; 28 } 29 30 } 31 flag[i]=false; 32 33 } 34 35 int main(int argc, char *argv[]) 36 { 37 int n; 38 scanf("%d",&n); 39 for(int i=1;i<=n;i++) 40 { 41 DFS(i,n,1); 42 } 43 return 0; 44 }
时间: 2024-10-29 00:43:14