zoukankan      html  css  js  c++  java
  • 51 NOD 1384 全排列(STL 搜索)

     
    基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题
     
         收藏
     
         关注
     
    给出一个字符串S(可能又重复的字符),按照字典序从小到大,输出S包括的字符组成的所有排列。例如:S = "1312",
    输出为:
     
    1123
    1132
    1213
    1231
    1312
    1321
    2113
    2131
    2311
    3112
    3121
    3211
    Input
    输入一个字符串S(S的长度 <= 9,且只包括0 - 9的阿拉伯数字)
    Output
    输出S所包含的字符组成的所有排列
    Input示例
    1312
    Output示例
    1123
    1132
    1213
    1231
    1312
    1321
    2113
    2131
    2311
    3112
    3121
    3211
     回溯法:
    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    using namespace std;
    char s[20];
    int book[30],a[20],ans[20],n;
    
    void dfs(int dis,int cnt)
    {
        int i,j;
        if(cnt==n) {
            for(i=1;i<=n;i++) cout<<ans[i];
            cout<<endl;
            return;
        } 
        for(i=dis;i<n;i++) {
            if(book[i]==0) {
                book[i]=1;
                ans[cnt+1]=a[i];
                dfs(dis,cnt+1);
                book[i]=0;
                while(i<n && a[i]==a[i+1]) i++;
            }
        }
        
    }
    
    
    int main()
    {
         ios::sync_with_stdio(false);  
        int i,j;
        cin>>s;
        n=strlen(s);
        for(i=0;i<n;i++) a[i]=s[i]-'0';
        sort(a,a+n);
        dfs(0,0);
        return 0;
    } 

    STL法:

    #include <iostream>  
    #include <string.h>  
    #include <algorithm>  
    using namespace std;  
    char str[10];  
    int n;  
    int main () {   
        while (cin >> str) {  
            n = strlen (str);  
            sort (str, str + n);  
            do {  
                puts(str);  
            } while (next_permutation(str, str + n));  
        }  
        return 0;  
    }  
    细雨斜风作晓寒。淡烟疏柳媚晴滩。入淮清洛渐漫漫。 雪沫乳花浮午盏,蓼茸蒿笋试春盘。人间有味是清欢。
  • 相关阅读:
    glog入门demo
    gflag的简单入门demo
    caffe库源码剖析——net层
    排序算法的c++实现——计数排序
    docker的/var/lib/docker目录迁移
    SpringCloud Ribbon 负载均衡 通过服务器名无法连接的神坑一个
    Spring Boot Cache使用与整合
    Navicat Keygen
    Windows / Office
    docker swarm 搭建与服务更新
  • 原文地址:https://www.cnblogs.com/cangT-Tlan/p/6055486.html
Copyright © 2011-2022 走看看