输出n的全排列
#include<iostream> #include<cstdio> using namespace std; #define MAXN 10 int vis[MAXN]; int stack[MAXN]; int n,k,num,top; void dfs(int n) { int st=1; stack[top++]=1; vis[1]=1; st=1; while(top||st<n) { if(top==n) {for(int i=0;i<top;i++) printf("%d ",stack[i]); printf("\n"); } int num; for(num=st+1;num<=n;num++) if(vis[num]==0) { break; } if(num>n) { top--; st=stack[top]; vis[st]=0; } else { stack[top++]=num; vis[num]=1; st=0; } } } int main() { scanf("%d",&n); dfs(n); }
时间: 2024-10-18 22:44:39