习题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);

}

 

posted @ 2020-03-04 16:52  跃鱼  阅读(461)  评论(0编辑  收藏  举报