欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

浙大版《数据结构(第2版)》题目集-习题2.8 输出全排列 (20分)

程序员文章站 2022-06-10 19:20:25
...

浙大版《数据结构(第2版)》题目集-习题2.8 输出全排列 (20分)

参考代码:

#include<stdio.h>

int path[10];      //已经选了哪些数,数组从标号1开始
int used[10]={0};  //标记对应数是否选择,0未选择,1选择,数组从标号1开始

void perm(int n,int depth); //depth表示递归到了第几层
int main()
{
    int n;
    scanf("%d",&n);
    perm(n,1);
    return 0;
}

void perm(int n,int depth)
{
    int i;
    if(n==depth-1)
    {
        for(i=1;i<=n;i++)
        {
            printf("%d",path[i]);
        }
        printf("\n");
    }
    else
    {
        for(i=1;i<=n;i++)
        {
            if(used[i]==0)
            {
                path[depth]=i;
                used[i]=1;
                perm(n,depth+1);
                used[i]=0;
            }
        }
    }
}

思路:

该题采用的是回溯算法,对该题思路不太理解的可以参考LeetCode中讲解的视频:全排列回溯算法

相关标签: C语言编程