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

数的全排列问题


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

相关推荐

05-29 22:11
门头沟学院 Java
Elastic90:抛开学历造假不谈,这公司的招聘需求也挺怪的,Java开发还要求你有图文识别、移动端开发和c++的经验,有点逆天了。
点赞 评论 收藏
分享
07-18 14:03
门头沟学院 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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