码迷,mamicode.com
首页 > 其他好文 > 详细

vijos 1379 字符串的展开

时间:2016-09-10 23:44:55      阅读:160      评论: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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!