深度优先搜索(数的全排列)

数的全排列问题


#include<stdio.h>
int n,a[10],flag[10];
void dfs(int step)
{
    //判断n个数字是否全部排入数组a 
    if (step==n+1)
    {
        for (int i=1;i<=n;i++)
        printf("%d",a[i]);
        printf("\n");
    }
    //遍历1-n 
    for (int i=1;i<=n;i++)
    {
        //如果i没出现 
        if (flag[i]==0)
        {
            //将n排入数组a 
            a[step]=i;
            //因为n已排入数组a,所以标记i 
            flag[i]=1;
            //进行下一步 
            dfs(step+1);
            //取消n的标记,继续循环 
            flag[i]=0;
        }
    }
}
int main()
{
    printf("请输入一个正整数n:");
    scanf("%d",&n);
    dfs(1);
}
全部评论

相关推荐

我已成为0offer的糕手:别惯着,胆子都是练出来的,这里认怂了,那以后被裁应届被拖工资还敢抗争?
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务