zoukankan      html  css  js  c++  java
  • POJ 3617 Best Cow Line

    贪心练习

    题目大意:

    给定长度为 $len$ 的字符串 $S$ ,要构造一个长度为 $N$ 的字符串 $T$ 。起初 $T$ 是一个空串, 随后反复进行如下操作:从 $S$ 的头部或者尾部删除一个字符加到 $T$ 的尾部, 构造一个字典序尽可能小的字符串 $T$ 

    题解:

    从字典序的性质, 无论 $T$ 的结尾有多大,只要前面部分尽可能小就可以。按照字典序比较 $S$ 和将 $S$ 反转后的字符串 $S'$, 如果 $S$ 较小, 从 $S$ 开头取文字追加到 $T$ 末尾 反之从 $S$ 末尾取出文字追加到 $T$ 末尾。字典序比较类的问题经常用得上贪心

    样例:

    ACDBCB

    输出:

    ABCBCD

    代码:

    #include <bits/stdc++.h>
    using namespace std;
    
    const int maxn = 1e5 + 10;
    int len;
    char S[maxn];
    
    void solve() {
        int a = 0, b = len - 1;
        while(a <= b) {
            bool left = false;
            for(int i = 0; a + i <= b; i ++) {
                if(S[a + i] < S[b - i]) {
                    left = true;
                    break;
                }
                else if(S[a + i] > S[b - i]) {
                    left = false;
                    break;
                }
            }
            if(left)
                printf("%c", S[a ++]);
            else
                printf("%c", S[b --]);
        }
        printf("
    ");
    }
    
    int main() {
        scanf("%s", S);
        len = strlen(S);
        solve();
        return 0;
    }
    

      

  • 相关阅读:
    线性表链式存储方式的C语言实现
    线性表顺序存储方式的C语言实现
    抽象数据类型Triplet的C语言实现
    Python之装饰器
    Django-auth(认证系统)
    Django-中间件
    Django-form表单
    Python cookie、session和自定义分页
    Django 使用ajax上传文件
    Python之迭代器和生成器
  • 原文地址:https://www.cnblogs.com/zlrrrr/p/9553071.html
Copyright © 2011-2022 走看看