dfs--全排列

输出自然数1到n所有不重复的排列,即n的全排列,要求所产生的任一数字序列中不允许出现重复的数字。

输入格式

n(1≤n≤9)

输出格式

由1~n组成的所有不重复的数字序列,每行一个序列。每个数字保留5个场宽

dfs板子题

//给有一个整数n,1~n个数全排列 
#include <iostream>
#include <cstdio>
using namespace std;
bool vis[100];
int a[100];
int n;
void dfs(int x)
{
    if (x == n+1)
    {
        for (int i = 1;i <= n;i++)
        {
                printf ("%5d",a[i]);
        }
        cout<<endl;
        return;
    }
    for (int i = 1;i <= n;i++)
    {
        if (vis[i]==0)
        {
        vis[i] = 1;
        a[x] = i;
        dfs(x+1);
        vis[i] = 0;
    }
}
}
int main()
{
    scanf ("%d",&n); 
    dfs(1);
    return 0;
}

猜你喜欢

转载自www.cnblogs.com/very-beginning/p/11743184.html