zoukankan      html  css  js  c++  java
  • POJ3617 Best Cow Line【贪心】

    Description 
    给定长度为n的字符串S,要构造一个长度为n的字符串T。起初,T是空串,随后反复进行下列任意操作: 
    1、从S的头部删除一个字符,加到T的尾部 
    2、从S的尾部删除一个字符,加到T的尾部 
    目标是构造字典序最小的字符串T(1<=n<=2000) 
    Input 
    第一行为字符串长度n,之后n行每行一个字符,字符串只包含大写字母 
    Output 
    输出字典序最小的字符串T,输出时一行只能输出80个字符 
    Sample Input 







    Sample Output 
    ABCBCD 

    思路:每次比较头尾大小,如果相等就继续比较第二个和倒数第二个,贪心的思想。

    #include<iostream>
    #include<cstdio>
    #include<string>
    #include<cstring>
    #include<algorithm>
    using namespace std;
    const int maxn=2005;
    char str[maxn];
    int n;
    void pailie()
    {
        int a=0,b=n-1,count=0;
        while(a<=b)
        {
            bool flag=true;
            for(int i=0;i<=b-a;++i)
            {
                if(str[a+i]>str[b-i])
                {
                    flag=false;
                    break;
                }
                else if(str[a+i]<str[b-i])
                {
                    flag=true;
                    break;
                }
            }
            if(flag)
            {
                putchar(str[a++]);
                ++count;      //计数,一行满80个字符就换行
            }
            else
            {
                putchar(str[b--]);
                ++count;
            }
            if((count+1)%80 == 0)
                putchar('
    ');
        }
       //putchar('
    ');
    }
    int main()
    {
        scanf("%d",&n);
        for(int i=0;i<n;++i)
            cin>>str[i];
        pailie();
        return 0;
    }
    
  • 相关阅读:
    c++ 内存管理方式
    4.2学习总结
    PTA面向对象程序设计6-3 面积计算器(函数重载)
    3.26学习总结
    PTA——c++面向对象基础
    3.17学习总结.listview用法总结
    3.16学习总结
    3.15学习总结(Python爬取网站数据并存入数据库)
    android开发使用jxl创建Excel
    第一次结对作业
  • 原文地址:https://www.cnblogs.com/aerer/p/9930978.html
Copyright © 2011-2022 走看看