DFS练习-codevs-1294全排列

1294 全排列

时间限制: 1 s
空间限制: 128000 KB
题目等级 : 黄金 Gold

题目描述 Description

给出一个n, 请输出n的所有全排列
输入描述 Input Description

读入仅一个整数n (1<=n<=10)
输出描述 Output Description

一共n!行,每行n个用空格隔开的数,表示n的一个全排列。并且按全排列的字典序输出。
样例输入 Sample Input

3
样例输出 Sample Output

1 2 3

1 3 2

2 1 3

2 3 1

3 1 2

3 2 1
题解

#include <stdio.h>
#include <string.h>

int n;
int book[11];
int s[11];

void dfs(int num)
{
    int i;
    if(num==1)
    {
        memset(book,0,11*sizeof(int));
        memset(s,0,11*sizeof(int));
    }
    if(num==n+1)
    {
        for(i=1;i<=n;i++)
            printf("%d ",s[i]);
        printf("\n");
        return;
    }
    for(i=1;i<=n;i++)
    {
        if(book[i])
            continue;
        book[i]=1;
        s[num]=i;
        dfs(num+1);
        book[i]=0;
    }
    return;
}

int main()
{
    scanf("%d",&n);
    dfs(1);
    return 0;
}

你可能感兴趣的:(c,DFS)