A

来源:互联网 发布:mud游戏编程 百度云 编辑:程序博客网 时间:2024/06/10 07:21

一个大模拟,这题,就是一开始的时候找到第一个单词可以作为开始,然后往下去找,如果没有了,就输出一下那个括号,还有个就是逗号也要隔开,最后的时候也要再检查一遍

这个题其实,有很多简单的方法,但是自己写搓了~~,

#include <iostream>#include <cstdio>#include <cstring>#include <cstdlib>#include <algorithm>#include <vector>#include <map>#include <queue>#include <math.h>#include <stack>#include <utility>#include <string>#include <sstream>#include <cstdlib>#include <set>#define LL long longusing namespace std;const int INF = 0x3f3f3f3f;const int maxn = 10000 + 10;int dir[4][2] = {{1,0},{0,1},{-1,0},{0,-1}};string in,out,ss,ans1,ans2;int flag1,flag2;void init(){    flag1 = 0;    flag2 = 0;    ans1 = "";    ans2 = "";}int main(){    freopen("abbreviation.in","r",stdin);freopen("abbreviation.out","w",stdout);    while(getline(cin,in))    {        out = "";        init();        for(int i=0; i < in.size(); i++)        {            int j;            int f1=0,f2=0;            for(j=i; j<in.size(); j++)            {                if(('A' <= in[j] && in[j] <= 'Z') || ('a' <= in[j] && in[j] <= 'z'));                else                    break;                ss += in[j];                if((j == i) && ('A' <= in[j] && in[j] <= 'Z'))                    f1=1;                if((j != i) && ('A' <= in[j] && in[j] <= 'Z'))                    f1=0;                if(('a' <= in[j] && in[j] <= 'z'))                    f2=1;            }            if(f1&&f2)            {                if(flag1 && flag2 == 0)                    flag2=1;                if(flag1 == 0)                    flag1=1;                ans1 += in[i];                ans2 += ss + in[j];            }            else            {                if(flag2 == 0)                {                    out += ans2;                    init();                }                if(flag2 == 1)                {                    out += ans1 + " ("+ans2.substr(0,ans2.size()-1)+")" + ans2[ans2.size()-1];                    init();                }                out += ss;                if(j != in.size())                    out += in[j];            }            if(in[j] != ' ' && j != in.size())            {                if(flag2 == 0)                {                    out += ans2;                    init();                }                if(flag2 == 1)                {                    out += ans1 + " ("+ans2.substr(0,ans2.size()-1)+")" + ans2[ans2.size()-1];                    init();                }            }            i = j;            ss = "";        }        if(in[in.size()-1] == ' ')        {            if(flag2 == 0)            {                out += ans2;                init();            }            if(flag2 == 1)            {                out += ans1 + " ("+ans2.substr(0,ans2.size()-1)+")" + ans2[ans2.size()-1];                init();            }        }        else        {            if(flag2 == 0)            {                out += ans2.substr(0,ans2.size()-1);                init();            }            if(flag2 == 1)            {                out += ans1 + " (" + ans2.substr(0,ans2.size()-1) + ")";                init();            }        }        cout<<out<<endl;    }    return 0;}


原创粉丝点击