首页 > 其他 > 详细

vijos 1379 字符串的展开

时间:2016-09-10 23:41:58      阅读:196      评论:0      收藏:0      [点我收藏+]

23333333333333333

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define maxn 1005000
char s[maxn],t[maxn],p[maxn];
int p1,p2,p3,top=-1,l;
void work(int x)
{
    int l=s[x-1],r=s[x+1],cnt=0;
    if ((s[x-1]<=9) && (s[x+1]>9)) {t[++top]=-;return;}
    if ((s[x-1]==-) || (s[x+1]==-)) {t[++top]=-;return;}
    for (int i=l+1;i<=r-1;i++)
    {
        for (int j=1;j<=p2;j++)
        {
            if (p1==3)
            {
                p[++cnt]=*;
                continue;
            }
            if ((s[x-1]>=0) && (s[x-1]<=9))
                p[++cnt]=i;
            else
            {
                if (p1==1) p[++cnt]=i;
                else if (p1==2) p[++cnt]=i-32;
            }
        }
    }
    if (p3==1)
    {
        for (int i=1;i<=cnt;i++)
            t[++top]=p[i];
    }
    else
    {
        for (int i=1;i<=cnt;i++)
            t[++top]=p[cnt-i+1];
    }
}
int main()
{
    scanf("%d%d%d",&p1,&p2,&p3);
    scanf("%s",s);
    l=strlen(s);
    for (int i=0;i<l;i++)
    {
        if (s[i]!=-)
            t[++top]=s[i];
        else
        {
            if (i==0) {t[++top]=-;continue;}
            if (i==l-1) {t[++top]=-;continue;}
            if (s[i-1]==s[i+1]) t[++top]=s[i];
            else if (s[i-1]>s[i+1]) t[++top]=s[i];
            else work(i);
        }
    }
    printf("%s",t);
    return 0;
}

 

vijos 1379 字符串的展开

原文:http://www.cnblogs.com/ziliuziliu/p/5860409.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!