数的全排列问题


#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);
}