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 } 
  • 相关阅读:
    DB2 for Z/os Statement prepare
    Foreign key (referential) constraints on DB2 LUW v105
    复制Informational constraints on LUW DB2 v105
    DB2 SQL Mixed data in character strings
    DB2 create partitioned table
    MVC中使用EF的技巧集(一)
    Asp.Net MVC 开发技巧(二)
    Linq使用技巧及查询示例(一)
    Asp.Net MVC 开发技巧(一)
    Asp.Net MVC Identity 2.2.1 使用技巧(八)
  • 原文地址:https://www.cnblogs.com/Renyi-Fan/p/7068032.html
Copyright © 2011-2022 走看看