zoukankan      html  css  js  c++  java
  • 递归--练习7--noi1750全排列

    递归--练习7--noi1750全排列

    一、心得

    二、题目

    1750:全排列

    总时间限制: 
    1000ms
     
    内存限制: 
    65536kB
    描述

    给定一个由不同的小写字母组成的字符串,输出这个字符串的所有全排列。 我们假设对于小写字母有'a' < 'b' < ... < 'y' < 'z',而且给定的字符串中的字母已经按照从小到大的顺序排列。

    输入
    输入只有一行,是一个由不同的小写字母组成的字符串,已知字符串的长度在1到6之间。
    输出
    输出这个字符串的所有排列方式,每行一个排列。要求字母序比较小的排列在前面。字母序如下定义:

    已知S = s1s2...sk , T = t1t2...tk,则S < T 等价于,存在p (1 <= p <= k),使得
    s1 = t1, s2 = t2, ..., sp - 1 = tp - 1, sp < tp成立。
    样例输入
    abc
    样例输出
    abc
    acb
    bac
    bca
    cab
    cba

    三、AC代码

     1 /*
     2 noi1750全排列
     3 //三个数组
     4 一个是原来存储基本数据的
     5 一个是储存答案的
     6 一个是做标记的 
     7 还有有个数来存答案的位数的 
     8 */ 
     9 #include <iostream>
    10 #include <algorithm> 
    11 using namespace std;
    12 int vis[10];
    13 char ans[10];
    14 void print(char ans[],int n){
    15     for(int i=0;i<n;i++){
    16         cout<<ans[i];
    17     }
    18     cout<<endl;
    19 }
    20 void f(string s,int cur){
    21     int n=s.length();
    22     if(cur==n) print(ans,n);
    23     else{
    24         for(int i=0;i<n;i++){
    25             if(!vis[i]){
    26                 vis[i]=1;
    27                 ans[cur]=s[i];
    28                 f(s,cur+1);
    29                 vis[i]=0;
    30             }
    31         }
    32     }
    33     
    34 } 
    35 
    36 int main(){
    37     string s;
    38     cin>>s;
    39     sort(s.begin(),s.end());
    40     f(s,0);
    41     return 0;
    42 } 
  • 相关阅读:
    内置函数大总结
    关于 global nonlocal 用法
    Python 基础数据类型相互转换
    Python 嵌套
    Python 基础关于编码
    「总结」 字符串总结
    「总结」 MLEAutoMaton的各种板子总结
    【洛谷4770】 [NOI2018]你的名字(SAM,线段树合并)
    【洛谷4070】 [SDOI2016]生成魔咒(SAM)
    【SP1811】 LCS
  • 原文地址:https://www.cnblogs.com/Renyi-Fan/p/7068032.html
Copyright © 2011-2022 走看看