全排列(题解)

版权声明:华天才原创 https://blog.csdn.net/weixin_43891469/article/details/85385759

题目描述

先给一个正整数 ( 1 < = n < = 10 )
例如n=3,所有组合,并且按字典序输出:

1 2 3 
1 3 2 
2 1 3 
2 3 1 
3 1 2 
3 2 1 

输入

输入一个整数n( 1<=n<=10)

输出

输出所有全排列
每个全排列一行,相邻两个数用空格隔开(最后一个数后面没有空格)

样例输入

3

样例输出

1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1

标程

#include<cstdio>
int a[1000]={0},b[1000]={0},n;
inline void dfs(int k)
{
    if(k==n+1)
    {
        for(int i=1;i<=n;i++)
			printf("%d ",a[i]);
        printf("\n");
        return;
    }
    for(int i=1;i<=n;i++)
        if(b[i]==0)
        {
            a[k]=i,b[i]=1;
            dfs(k+1);
            a[k]=0,b[i]=0;
        }
}
int main()
{
    scanf("%d",&n);
    dfs(1);
    return 0;
}

猜你喜欢

转载自blog.csdn.net/weixin_43891469/article/details/85385759