文档章节

L1-023. 输出GPLT

l
 lkk465464
发布于 2017/03/28 11:32
字数 614
阅读 118
收藏 0

L1-023. 输出GPLT

时间限制

150 ms

内存限制

65536 kB

代码长度限制

8000 B

判题程序

Standard

作者

陈越

给定一个长度不超过10000的、仅由英文字母构成的字符串。请将字符重新调整顺序,按“GPLTGPLT....”这样的顺序输出,并忽略其它字符。当然,四种字符(不区分大小写)的个数不一定是一样多的,若某种字符已经输出完,则余下的字符仍按GPLT的顺序打印,直到所有字符都被输出。

输入格式:

输入在一行中给出一个长度不超过10000的、仅由英文字母构成的非空字符串。

输出格式:

在一行中按题目要求输出排序后的字符串。题目保证输出非空。

输入样例:

pcTclnGloRgLrtLhgljkLhGFauPewSKgt

输出样例:

GPLTGPLTGLTGLGLL

#include<iostream>
using namespace std;
#define MAX 10001
int main()
{
    char n[MAX];
    int g=0,p=0,l=0,t=0,i;
    cin>>n;
    for(i=0;n[i]!='\0';i++)
    {
        if(n[i]=='g' || n[i]=='G')
            g++;
        if(n[i]=='p' || n[i]=='P')
            p++;
        if(n[i]=='l' || n[i]=='L')
            l++;
        if(n[i]=='t' || n[i]=='T')
            t++;
    }
    //求gplt中最大值
    int max=(((g>=p)?g:p>=l)?((g>=p)?g:p):l)>=t?(((g>=p)?g:p>=l)?((g>=p)?g:p):l):t;
a:    while(g>0)
    {
        cout<<"G";g--;
        goto b;
    }
b:    while(p>0)
    {
        cout<<"P";p--;
        goto c;
    }
c:    while(l>0)
    {
        cout<<"L";l--;
        goto d;
    }
d:    while(max>0)
    {
        if(t>0)
            cout<<"T";t--;
        max--;goto a;
    }
    cout<<endl;
    return 0;
}

下面这种写法经过测试部分正确:

#include<iostream>
using namespace std;
#define MAX 10001
int main()
{
    char n[MAX];
    int g=0,p=0,l=0,t=0,i;
    cin>>n;
    for(i=0;n[i]!='\0';i++)
    {
        if(n[i]=='g' || n[i]=='G')
            g++;
        if(n[i]=='p' || n[i]=='P')
            p++;
        if(n[i]=='l' || n[i]=='L')
            l++;
        if(n[i]=='t' || n[i]=='T')
            t++;
    }
    //求gplt中最大值
    int max=(((g>=p)?g:p>=l)?((g>=p)?g:p):l)>=t?(((g>=p)?g:p>=l)?((g>=p)?g:p):l):t;
    for(max;max>0;max--)
    {
        if(g>0)
        {
            cout<<"G";g--;
        }
        if(p>0)
        {
            cout<<"P";p--;
        }
        if(l>0)
        {
            cout<<"L";l--;
        }
        if(t>0)
        {
            cout<<"T";t--;
        }
    }/*
a:    while(g>0)
    {
        cout<<"G";g--;
        goto b;
    }
b:    while(p>0)
    {
        cout<<"P";p--;
        goto c;
    }
c:    while(l>0)
    {
        cout<<"L";l--;
        goto d;
    }
d:    while(max>0)
    {
        if(t>0)
            cout<<"T";t--;
        max--;goto a;
    }*/
    cout<<endl;
    return 0;
}

    看到题先想到的是使用栈,循环扫描字符数组,将字符按照想要的顺序入栈,然后将该字符从原数组中 删除,但是太麻烦(时间复杂度较高),这种方法简单点。

© 著作权归作者所有

l
粉丝 0
博文 1
码字总数 614
作品 0
太原
私信 提问
[马哥linux运维][04]

用户管理:useradd、userdel、usermod、passwd、chsh、chfn、finger、id、chage 组管理:groupadd、groupdel、groupmod、gpasswd 权限管理:chown、chgrp、chmod、umask /etc/passwd: 用户名:密......

妍小屋
2018/06/29
0
0
一篇文章教你用 11 行 Python 代码实现神经网络

导语:怎样用最简单的方式实现神经网络? 雷锋网按:本文作者陶言祺,原文载于作者个人博客,雷锋网(公众号:雷锋网)已获授权。 声明:本文是根据英文教程 A Neural Network in 11 lines of ...

铁扇公主1
2017/04/24
613
0
理解L1,L2 范数在机器学习中应用

理解L1,L2 范数 L1,L2 范数即 L1-norm 和 L2-norm,自然,有L1、L2便也有L0、L3等等。因为在机器学习领域,L1 和 L2 范数应用比较多,比如作为正则项在回归中的使用 Lasso Regression(L1)...

坂本龙一
03/06
0
0
机器学习-范数正则化:L1正则,L2正则

1 拟合 形象的说,拟合就是把平面上一系列的点,用一条光滑的曲线连接起来。因为这条曲线有无数种可能,从而有各种拟合方法。拟合的曲线一般可以用函数表示,根据这个函数的不同有不同的拟合...

致Great
2018/05/25
0
0
2.python中对于序列比较基础的迭代方法。

一. 并行迭代。 如果并行迭代,首推zip()函数!!! 比如说现在有两个长度一样的列表,这两个列表中,索引位置相同的值是有关联的,现在必须要把这两个表的值同时遍历,如果遇到这种情况,就...

技术小胖子
2017/11/07
0
0

没有更多内容

加载失败,请刷新页面

加载更多

哪些情况下适合使用云服务器?

我们一直在说云服务器价格适中,具备弹性扩展机制,适合部署中小规模的网站或应用。那么云服务器到底适用于哪些情况呢?如果您需要经常原始计算能力,那么使用独立服务器就能满足需求,因为他...

云漫网络Ruan
今天
9
0
Java 中的 String 有没有长度限制

转载: https://juejin.im/post/5d53653f5188257315539f9a String是Java中很重要的一个数据类型,除了基本数据类型以外,String是被使用的最广泛的了,但是,关于String,其实还是有很多东西...

低至一折起
今天
17
0
OpenStack 简介和几种安装方式总结

OpenStack :是一个由NASA和Rackspace合作研发并发起的,以Apache许可证授权的自由软件和开放源代码项目。项目目标是提供实施简单、可大规模扩展、丰富、标准统一的云计算管理平台。OpenSta...

小海bug
昨天
11
0
DDD(五)

1、引言 之前学习了解了DDD中实体这一概念,那么接下来需要了解的就是值对象、唯一标识。值对象,值就是数字1、2、3,字符串“1”,“2”,“3”,值时对象的特征,对象是一个事物的具体描述...

MrYuZixian
昨天
9
0
解决Mac下VSCode打开zsh乱码

1.乱码问题 iTerm2终端使用Zsh,并且配置Zsh主题,该主题主题需要安装字体来支持箭头效果,在iTerm2中设置这个字体,但是VSCode里这个箭头还是显示乱码。 iTerm2展示如下: VSCode展示如下: 2...

HelloDeveloper
昨天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部