华师一附中OI组

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
12
返回列表 发新帖
楼主: admin
打印 上一主题 下一主题

P1706 全排列问题

[复制链接]

13

主题

41

帖子

211

积分

中级会员

Rank: 3Rank: 3

积分
211
11#
发表于 2018-5-21 12:52:30 | 只看该作者
#include<iostream>
#include<algorithm>
#include<iomanip>
using namespace std;
int a[10],n;
int main()
{
    cin>>n;
    for(int i=1;i<=n;i++) a[i]=i;
    do
    {
        for(int i=1;i<=n;i++) cout<<setw(5)<<a[i]; cout<<endl;
    }while(next_permutation(a+1,a+1+n));
    return 0;
}
回复 支持 反对

使用道具 举报

0

主题

17

帖子

82

积分

注册会员

Rank: 2

积分
82
12#
发表于 2018-6-9 15:05:39 | 只看该作者
  1. #include<iostream>
  2. #include<iomanip>
  3. using namespace std;
  4. int a[105],b[105];
  5. int n;
  6. void hhh(int i)
  7. {
  8.     int j,k;
  9.     if(i>=n+1)
  10.     {
  11.         for(j=1;j<=n;j++)
  12.             cout<<setw(5)<<a[j];
  13.         cout<<endl;
  14.         return;
  15.     }
  16.     else for(k=1;k<=n;k++)
  17.     {
  18.         if(b[k]==0)
  19.         {
  20.             a[i]=k;
  21.             b[k]=1;
  22.             hhh(i+1);
  23.             b[k]=0;
  24.         }
  25.     }
  26. }
  27. int main()
  28. {
  29.     cin>>n;
  30.     hhh(1);
  31.     return 0;
  32. }
复制代码
回复 支持 反对

使用道具 举报

0

主题

1

帖子

16

积分

新手上路

Rank: 1

积分
16
13#
发表于 2018-6-12 16:47:32 | 只看该作者
#include<iostream>
#include<iomanip>
using namespace std;
int a[11];
bool vis[11];
int n;
void dfs(int plc)
{
    if(plc>n)
    {
        for(int i=1;i<=n;i++)
            cout<<setw(5)<<a[i];
        cout<<endl;

        return;
    }
    for(int i=1;i<=n;i++)
    {
        if(!vis[i])
        {
            vis[i]=1;
            a[plc]=i;
            dfs(plc+1);
            vis[i]=0;
        }
    }


}

int main()
{
    cin>>n;
    dfs(1);
    return 0;
}
回复 支持 反对

使用道具 举报

0

主题

2

帖子

16

积分

新手上路

Rank: 1

积分
16
14#
发表于 2018-6-16 16:06:01 | 只看该作者
  1. #include <iostream>
  2. using namespace std;
  3. int n;
  4. bool x[10];
  5. int a[10];
  6. void  dfs(int i)
  7. {
  8.   
  9.     if(i==n)
  10.     {
  11.         for(int q=0;q<n;q++) cout<<a[q]<<" "; cout<<endl;
  12.     }
  13.     else
  14.     {
  15.         for(int j=1;j<=n;j++)   
  16.         {
  17.             if(x[j])
  18.             {
  19.                 a[i]=j;
  20.                 x[j]=false;
  21.                 dfs(i+1);
  22.                 x[j]=true;
  23.             }
  24.         }
  25.     }
  26. }
  27. int main()
  28. {
  29.     cin>>n;
  30.     for(int ans=1;ans<=n;ans++)
  31.     x[ans]=1;
  32.     dfs(0);
  33.     return 0;
  34. }
复制代码
回复 支持 反对

使用道具 举报

50

主题

215

帖子

619

积分

高级会员

Rank: 4

积分
619
15#
发表于 2018-7-12 13:52:14 | 只看该作者
  1. #include<iostream>
  2. #include<iomanip>
  3. using namespace std;
  4. int n,a[10];
  5. bool b[10];
  6. void dfs(int x)
  7. {
  8.     int i;
  9.     if(x==n+1)
  10.     {
  11.         for(i=1; i<=n; i++)
  12.             cout<<setw(5)<<a[i];
  13.         cout<<endl;
  14.         return;
  15.     }
  16.     else
  17.         for(i=1; i<=n; i++)
  18.         {
  19.             if(!b[i])
  20.             {
  21.                 b[i]=true;
  22.                 a[x]=i;
  23.                 dfs(x+1);
  24.                 b[i]=false;
  25.             }

  26.         }
  27. }
  28. int main()
  29. {
  30.     cin>>n;
  31.     dfs(1);
  32.     return 0;
  33. }
复制代码
回复 支持 反对

使用道具 举报

14

主题

106

帖子

317

积分

中级会员

Rank: 3Rank: 3

积分
317
16#
发表于 2018-9-1 22:17:07 | 只看该作者
特别无聊地上STL algorithm 中的神奇函数
  1. #include<iostream>
  2. #include<algorithm>
  3. using namespace std;
  4. int main(){
  5.     int n,p[10],i;
  6.     cin>>n;
  7.     for(i=0;i<n;i++) p[i]=i;
  8.     do{
  9.         for(i=0;i<n;i++) cout<<p[i]<<" ";
  10.         cout<<endl;
  11.     }while(next_permutation(p,p+n));  //求下一个排列
  12.     return 0;
  13. }
复制代码
回复 支持 反对

使用道具 举报

9

主题

26

帖子

111

积分

禁止发言

积分
111
17#
发表于 2018-9-4 17:02:03 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

0

主题

4

帖子

53

积分

注册会员

Rank: 2

积分
53
18#
发表于 2020-8-5 10:08:57 | 只看该作者
  1. #include<iostream>
  2. using namespace std;
  3. int a[11]={0,1,2,3,4,5,6,7,8,9},n;
  4. bool b[11]={0,1,1,1,1,1,1,1,1,1};
  5. void pr()
  6. {
  7.         for(int i=1;i<=n;i++) cout<<"    "<<a[i];
  8.         cout<<endl;
  9. }
  10. void pmn(int i)
  11. {
  12.         if(i>n) pr();
  13.         else
  14.         {
  15.                 for(int k=1;k<=n;k++)
  16.                 {
  17.                         if(b[k]==1)
  18.                         {
  19.                                 a[i]=k;
  20.                                 b[k]=0;
  21.                                 pmn(i+1);
  22.                                 b[k]=1;
  23.                         }
  24.                 }
  25.         }
  26. }
  27. int main()
  28. {
  29.         cin>>n;
  30.         pmn(1);
  31.         return 0;
  32. }
复制代码
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|服务支持:DZ动力|华师一附中OI组  

GMT+8, 2024-12-25 13:13 , Processed in 0.280019 second(s), 21 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表