zoukankan      html  css  js  c++  java
  • URAL 1993 This cheeseburger you don't need

    http://acm.timus.ru/problem.aspx?space=1&num=1993

    题意:题目中那么多英语直接就没看,看了样例知道是什么意思了,就是给你一个字符串,算是一个句子,若是复杂句,是有“ ,”作为分割为两个句子的,若是不加任何括号的就原样输出,若是有括号的先输出花括号里的,再输出中括号里的,再输出小括号里的,每一句话只有第一个字母大写。

    思路 :模拟题吧,一向挺烦的,万一哪个细节没注意到就容易出错。

    #include<cstdio>
    #include<cstring>
    #define maxn 1000
    using namespace std;
    char s[maxn],s1[maxn];
    int a[maxn],b[maxn];
    int main()
    {
        while(gets(s))
        {
            int m,t;
            int k=strlen(s);
            bool flag=false;
            for(int i=0; i<k; i++)
            {
                if(s[i]=='{'||s[i]=='('||s[i]=='[')
                {
                    s[i+1]+=32;
                    break;
                }
            }
            for(int i=0; i<k; i++)
            {
                if(s[i]==',')
                {
                    flag=true;
                    m=i;
                    break;
                }
            }
            if(!flag)
            {
                for(int i=0; i<k; i++)
                {
                    if(s[i]=='{') a[1]=i;
                    else if(s[i]=='(') a[2]=i;
                    else if(s[i]=='[') a[3]=i;
                    else if(s[i]=='}') b[1]=i;
                    else if(s[i]==')') b[2]=i;
                    else if(s[i]==']') b[3]=i;
                }
                t=1;
                while(t<=3)
                {
                    for(int j=a[t]+1; j<b[t]; j++)
                    {
                        if(t==1&&j==a[t]+1)
                        printf("%c",s[j]-32);
                        else printf("%c",s[j]);
                    }
                    if(t!=3) printf(" ");
                    t++;
                }
                printf("
    ");
            }
            else if(flag)
            {
                for(int i=0; i<m; i++)
                {
                    if(s[i]=='{') a[1]=i;
                    else if(s[i]=='(') a[2]=i;
                    else if(s[i]=='[') a[3]=i;
                    else if(s[i]=='}') b[1]=i;
                    else if(s[i]==')') b[2]=i;
                    else if(s[i]==']') b[3]=i;
                }
                t=1;
                while(t<=3)
                {
                    for(int j=a[t]+1; j<b[t]; j++)
                    {
                        if(t==1&&(j==a[t]+1))
                        printf("%c",s[j]-32);
                        else printf("%c",s[j]);
                    }
                    if(t!=3) printf(" ");
                    t++;
                }
                int cc;
                for(int j=m; j<k; j++)
                {
                    if(s[j]=='{'||s[j]=='('||s[j]=='[')
                    {
                        cc=j;
                        break;
                    }
                    else printf("%c",s[j]);
                }
                for(int i=cc; i<k; i++)
                {
                    if(s[i]=='{') a[1]=i;
                    else if(s[i]=='(') a[2]=i;
                    else if(s[i]=='[') a[3]=i;
                    else if(s[i]=='}') b[1]=i;
                    else if(s[i]==')') b[2]=i;
                    else if(s[i]==']') b[3]=i;
                }
                t=1;
                while(t<=3)
                {
                    for(int j=a[t]+1; j<b[t]; j++)
                    {
                        printf("%c",s[j]);
                    }
                    if(t!=3) printf(" ");
                    t++;
                }
                printf("
    ");
            }
        }
        return 0;
    }
    View Code
  • 相关阅读:
    CSS cursor 属性笔记
    sql 不等于 <>
    去掉时间中的时分秒
    ref 和 out区别
    关于闭包(未完待续)
    面向对象——多态(摘)
    SQL Service 数据库 基本操作 视图 触发器 游标 存储过程
    遍历winform 页面上所有的textbox控价并赋值string.Empty
    关于Html 和Xml 区别(备忘)
    python之面向对象进阶
  • 原文地址:https://www.cnblogs.com/luyingfeng/p/3451684.html
Copyright © 2011-2022 走看看