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

数的全排列问题


#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);
}
全部评论

相关推荐

不愿透露姓名的神秘牛友
07-24 18:34
点赞 评论 收藏
分享
07-19 13:28
长沙学院 Java
程序员小白条:你有面试就有希望,没面试自然就没希望,到时候就知道了,你问别人也没啥用处的
点赞 评论 收藏
分享
06-25 16:25
梧州学院 Java
愿汐_:项目介绍那么长,然而你做了啥就一句话?
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-24 13:35
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务