【中】 输出全排列 递归 20分

发布时间:2019年03月16日 阅读:250 次

7-1 输出全排列 (20 分)

请编写程序输出前个正整数的全排列(),并通过9个测试用例(即从1到9)观察逐步增大时程序的运行时间。

输入格式:

输入给出正整数)。

输出格式:

输出1到的全排列。每种排列占一行,数字间无空格。排列的输出顺序为字典序,即序列排在序列之前,如果存在使得 并且

输入样例:

3

输出样例:

123
132
213
231
312
321
#include <iostream>
#include<bits/stdc++.h>
using namespace std;

int main()
{
    int n;
    cin>>n;
    int a[100];
    for(int i=1;i<=n;i++)
    {
        a[i] = i;
    }
    do
    {
        int top   =1;
        for(int i=1;i<=n;i++)
        {

            printf("%d",a[i]);

        }
        printf("\n");

    }
    while(next_permutation(a+1,a+1+n));
    return 0;
}

code2:

#include<bits/stdc++.h>
using namespace std;
int book[230]= {0};
int a[203];
int n;
void dfs(int i)
{
    if(i==n)
    {

        for(int j=0; j<n; j++)
        {
            printf("%d",a[j]);
        }
        printf("\n");
        return ;
    }
    for(int j=1; j<=n; j++)
    {
        if(!book[j])
        {
            a[i++] = j;
            book[j] =1;
            dfs(i);
            i--;
            book[j] = 0;
        }
    }


}
int main()
{

    //int n;
    cin>>n;
    dfs(0);

}


Tag:
相关文章
发表评论

发表评论: