A - Abbreviation Gym - 101190A

xiaoxiao2021-02-28  137

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

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

#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 long using 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; }

转载请注明原文地址: https://www.6miu.com/read-65686.html

最新回复(0)