zoukankan      html  css  js  c++  java
  • 牛客练习赛16 A 字典序最大的子序列【贪心】

    链接:https://www.nowcoder.com/acm/contest/84/A
    来源:牛客网
    【出处】:http://codeforces.com/contest/196/problem/A  【Codeforces Round #124 (Div. 1) A】
    
    题目描述 
    给定字符串s,s只包含小写字母,请求出字典序最大的子序列。
    
    
    子序列:https://en.wikipedia.org/wiki/Subsequence
    字典序:https://en.wikipedia.org/wiki/Lexicographical_order
    
    
    输入描述:
    一行一个字符串s (1 <= |s| <= 100,000)。
    
    
    输出描述:
    字典序最大的子序列。
    示例1
    输入
    
    ababba
    输出
    bbba
    示例2
    输入
    abbcbccacbbcbaaba
    输出
    cccccbba
    

    【分析】:贪心。从后面找单调递增的不连续序列。

    【出处】:
    Codeforces Round #124 (Div. 1)

    【代码】:

    /*
    从后向前找,后面的总是小于等于前面的才能保证字典序最大 
    最后一个字符肯定包含在内  
    */
    #include <bits/stdc++.h>
    #define ll long long
    using namespace std;
    const int N = 1e5+10;
    char s[N],ans[N];
    int main()
    {
        cin>>s;
        int k=0;
        char Max='a';
        for(int i=strlen(s)-1;i>=0;i--){
            if(s[i]>=Max){
                Max=s[i];
                ans[k++]=s[i];
            }
        }
        for(int i=k-1;i>=0;i--){
            printf("%c",ans[i]);
        }
        cout<<endl;
        return 0;
    }
    
    
    /*
    每次取当前剩余字典序最大的字符。
    什么是字典序最大的子序列。就是从尾巴到头的最长非递减子序列~
    erase用法:
    (1)string& erase ( size_t pos = 0, size_t n = npos );
    (2)iterator erase ( iterator position );
    (3)iterator erase ( iterator first, iterator last );
    也就是说有三种用法:
    (1)erase(pos,n); 删除从pos开始的n个字符,比如erase(0,1)就是删除第一个字符
    (2)erase(position);删除position处的一个字符(position是个string类型的迭代器)
    (3)erase(first,last);删除从first到last之间的字符(first和last都是迭代器)
    */
    #include<bits/stdc++.h>
    
    using namespace std;
    
    int main()
    {
        string s;
        cin>>s;
        ostringstream ss;
        while(!s.empty())
        {
            string::iterator it=max_element(s.begin(),s.end());
            ss<<*it;
            s.erase(s.begin(),it+1);
        }
        cout<<ss.str()<<endl;
    }
    
    
  • 相关阅读:
    偶感
    数据库脚本开发中应注意的事项
    事务与隔离级别笔记
    Spring MVC学习笔记
    Eclipse环境配置与快捷命令
    告别2016,展望2017
    待总结项
    常见问题汇总
    我的工具箱
    精品文章收藏
  • 原文地址:https://www.cnblogs.com/Roni-i/p/8965554.html
Copyright © 2011-2022 走看看