zoukankan      html  css  js  c++  java
  • 洛谷P1706全排列问题

     P1706 全排列问题

    题目描述

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

    输入输出格式

    输入格式:

    n(1≤n≤9)

    输出格式:

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

    输入输出样例

    输入样例#1

    3

    输出样例#1

        1    2    3

        1    3    2

        2    1    3

        2    3    1

        3    1    2

        3    2    1

    回溯算法,另外涉及到常宽:

    cout<<setw(5)<<ans[i]或printf(“%5d”,ans[i])都可以

    (注意如果用setw的话要引用iomanip库。)

    #include<cstring>
    
    #include<string>
    
    #include<algorithm>
    
    #include<iostream>
    
    #include<cstdio>
    
    #include<iomanip>
    
    using namespace std;
    
    bool visit[1001];
    
    int n;
    
    int ans[1001];
    
    void search(int k)
    
    {
    
          if(k>n)
    
          {
    
               for(int i=1;i<=n;i++)
    
                     cout<<setw(5)<<ans[i];
    
               cout<<endl;
    
          }
    
          else
    
          {
    
               for(int i=1;i<=n;i++)
    
               {
    
                     if(!visit[i])
    
                     {
    
                          ans[k]=i;
    
                          visit[i]=true;
    
                          search(k+1);
    
                          visit[i]=false;
    
                     }
    
               }
    
          }
    
    }
    
    int main()
    
    {
    
          ios::sync_with_stdio(false);
    
          cin>>n;
    
          search(1);
    
        return 0;
    
    }
  • 相关阅读:
    2016孤独重视
    什么时候有空写一篇影评 《含泪活着》
    登录页面总结
    心跳机制
    心跳机制详解
    mysql数据库字符编码修改
    mysql20170404代码实现
    2017全面JAVA面试经历总结
    Oracle经典入门教程
    MySQL基础教程-绝对推荐
  • 原文地址:https://www.cnblogs.com/kuaileyongheng/p/6764384.html
Copyright © 2011-2022 走看看