• poi3617Best Cow Line ——贪心法


    给定长度为N(1≤N≤2000)的字符串S,要构造一个长度为N的字符串T。期初,T是一个空串,随后反复进行下列任意操作。

    ·从S的头部删除一个字符,加到T的尾部

    ·从S的尾部删除一个字符,加到T的尾部

    目标是要构造字典序尽可能小的字符串

    提示Input

    · Line 1: 一个整数(integer): N
    · Lines 2~+1: Line i+1 contains a single initial ('A'..'Z') of the string in the ith position in the original line

    Output

    输出时每行最多80个字符

    Sample Input

    6
    A
    C
    D
    B
    C
    B

    Sample Output

    ABCBCD

    AC代码:

    #include<iostream>
    #include<cstdio>
    using namespace std;
    const int maxn=2005;
    int main()
    {
    char str1[maxn],str2[maxn],w;
    int n;
    cin>>n;
    scanf("%c",&w);
    for(int i=0;i<n;i++)
    scanf("%c%c",&str1[i],&w);
    for(int i=0,j=n-1,k=0;k<n;k++)
    {
    if(str1[i]>str1[j]) str2[k]=str1[j],j--;
    else if(str1[i]<str1[j]) str2[k]=str1[i],i++;
    else //注意首尾相同时的做法
    {
    for(int m=1;;m++)
    {
    if(i+m>=j-m)
    {
    str2[k]=str1[i],i++;
    break;
    }
    if(str1[i+m]<str1[j-m])
    {
    str2[k]=str1[i],i++;
    break;
    }
    if(str1[i+m]>str1[j-m])
    {
    str2[k]=str1[j],j--;
    break;
    }
    }
    }
    }
    for(int i=0,k=0;i<n;i++,k++)
    {
    cout<<str2[i];
    if(k==79) printf(" "),k=-1;
    }
    return 0;
    }


    作者:孙建钊
    出处:http://www.cnblogs.com/sunjianzhao/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

  • 相关阅读:
    Spring中的一些常用接口
    ApplicationContextAware的作用
    用spring的 InitializingBean 的 afterPropertiesSet 来初始化
    虚拟机扩容(/dev/mapper/centos-root 空间不足)
    AJAX
    Git
    jQuery
    JS
    JS
    jQuery
  • 原文地址:https://www.cnblogs.com/sunjianzhao/p/11359073.html
Copyright © 2020-2023  润新知