码迷,mamicode.com
首页 > 其他好文 > 详细

luogu P1706全排列问题

时间:2018-03-08 00:03:48      阅读:151      评论:0      收藏:0      [点我收藏+]

标签:保留   一个   style   题目   出现   www   htm   代码   com   

题目描述

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

输入输出格式

输入格式:

 

n(1≤n≤9)

 

输出格式:

 

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

题解

这题真是道好题,用STL的好题

正常的题解是这样的(我同学的qwq)

#include<iostream>
#include<iomanip>
using namespace std;
int n;
int a[10001];
bool b[10001]={0};
void print()
{
    int i;
    for(i=1;i<=n;i++)
    cout<<setw(5)<<a[i];
    cout<<endl;
    return ;
}
void dfs(int k)
{
    int i;
    for(i=1;i<=n;i++)
    {
        if(!b[i])
        {
            a[k]=i;
            b[i]=1;
            dfs(k+1);
            b[i]=0;
        }
        
    }
    if(k==n+1)
    print();
    
    return ;
}
int main()
{
    cin>>n;
    dfs(1);
    
}

然而你们以为我会手打向上边那样的代码吗(偷笑)

下边是我写的代码

#include<bits/stdc++.h>
using namespace std;
int a[11];
int main()
{
    int n;
    cin>>n;
    for(int i=1;i<=n;i++)
        a[i]=i,printf("    %d",a[i]);
    while(next_permutation(a+1,a+1+n))
    {
        printf("\n");
        for(int i=1;i<=n;i++)
        printf("    %d",a[i]);
    }
    return 0;
}
next_permutation()STL中求下一个排列
友链:http://www.slyar.com/blog/stl_next_permutation.html

luogu P1706全排列问题

标签:保留   一个   style   题目   出现   www   htm   代码   com   

原文地址:https://www.cnblogs.com/ljp20021026/p/8525225.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!