zoukankan      html  css  js  c++  java
  • 字母排列_next_permutation_字典序函数_待解决

    问题 B: 字母排列

    时间限制: 1 Sec  内存限制: 64 MB
    提交: 19  解决: 5
    [提交][状态][讨论版]

    题目描述

    当给出一串字符时,我们逐个可以变换其字符,形成新的字符串。假如对这些字符进行排序(按字母顺序),那么,字符串本身被排序了。任何设定的变换都可能产生独特的决定其在排序中的位置的数字。例如,字符串“acab”产生12种不同的变换:
    aabc    1   acab    5   bcaa    9
    aacb    2   acba    6   caab   10
    abac    3   baac    7   caba   11
    abca    4   baca    8   cbaa   12
    因此,字符串“acab”在这个序列中的位置被记作5。
    编一个程序,读入一个字符串,计算出其在字符串变换顺序时的位置。注意这个变换的数值可能会很大,但是,我们可以保证,数值再大也不可能大于231-1。

    输入

      一个字符串S。

    输出

      一个整数,表示字符串在它的排列的序列中的位置。

    样例输入

    bacaa
    

    样例输出

    15
    

    提示

    50%的数据:字符串长度≤10;

    100%的数据:字符串长度≤30

    解题思路:用了next_permutation()函数,但是字符串长度是小于30的,会超时,不知道怎么才能改进.

    代码:

    #include <iostream>
    #include <cstdio>
    #include <algorithm>
    #include <cstring>
    
    using namespace std;
    
    int main()
    {
        char a[35];
        char base[35];
        int len=0;
        int b=0;
        long int cou=0;
        scanf("%s",a);
        len=strlen(a);
        do{
            cou++;
        }while(prev_permutation(a,a+len));
        printf("%ld",cou);
        return 0;
    }
  • 相关阅读:
    jQuery(Ajax)
    博文相关接口
    登录接口设计和实现
    CSS-层叠样式表
    Google Kaptcha 生成图形验证码
    IDEA中如何修改生成javadoc里默认的author
    maven项目resources文件在target找不到
    IDEA 获取 resources 下的文件
    免安装版 mysql5.7.zip 的配置记录
    从前端模块化 到 webpack 再到使用 vue文件
  • 原文地址:https://www.cnblogs.com/TWS-YIFEI/p/5751979.html
Copyright © 2011-2022 走看看