• P1098 字符串的展开——细节决定成败


    P1098 字符串的展开

    规则有点多吧;

    isdigit(char) 表示如果字符是数字返回一,否则返回0;

    倒序做一个下标就行了;

    巧用三目运算符避开分类讨论,避开开头和结尾,根据条件层层逼近;

    #include<cstring>
    #include<cstdio>
    #include<iostream>
    #include<algorithm>
    #include<string>
    using namespace std;
    const int maxn=9102;
    char s[maxn],ans[maxn];
    int pos;
    int p1,p2,p3;
    
    int main()
    {
        scanf("%d%d%d",&p1,&p2,&p3);
        scanf("%s",s);
        int len=strlen(s);
        ans[pos++]=s[0];
        for(int i=1;i<len-1;i++)
        {
            if(s[i]=='-'&&s[i-1]!='-')
            {
                if((isdigit(s[i-1])!=isdigit(s[i+1]))||s[i-1]>=s[i+1]) {ans[pos++]=s[i];continue;}
                int qw=s[i+1]-s[i-1]-1;
                for(int j=1;j<=qw;j++)
                {
                    int now=(p3==1?j:qw-j+1);
                    for(int k=1;k<=p2;k++)
                    {
                        if(p1==3) ans[pos++]='*';
                        else ans[pos++]=s[i-1]+now-(!isdigit(s[i-1])&&p1==2?32:0);
                    }
                }
            }
            else ans[pos++]=s[i];
        }
        ans[pos]=s[len-1];
        cout<<ans;
        return 0;
    }
  • 相关阅读:
    commando VM安装
    Pocscan搭建详解
    Windows-RW-LinuxFS
    Festival
    ffmpeg-metadata
    FFmpeg-Screen-Recording
    ffmpeg-map
    ffmpeg-utils
    Linux-Fcitx5
    ffmpeg-volumedetect
  • 原文地址:https://www.cnblogs.com/WHFF521/p/11633771.html
Copyright © 2020-2023  润新知