习题2.8 输出全排列 (20分)--dfs
#include <stdio.h> #include <string.h> int n; int visit[11]; int re[11]; void dfs(int step) { int i; if(step==n+1) { for(i=1; i<=n; i++) { printf("%d",re[i]); } printf("\n"); return; } for(i=1; i<=n; i++) { if(!visit[i]) { re[step]=i; visit[i]=1; dfs(step+1); visit[i]=0;//回溯 } } } int main() { scanf("%d",&n); memset(visit,0,sizeof(visit)); dfs(1); }
勤能补拙,熟能生巧