PAT (Basic Level) Practice (中文)- 1052 卖个萌(20 分)

题目链接:点击打开链接

题目大意:略。

解题思路:

  • 注意当中有越界的下标。
  • 注意 “\\” 转义字符。
  • 题目有些字符输出不了,没事,其他正常即可。

AC 代码

#include<bits/stdc++.h>
#include<cmath>

#define mem(a,b) memset(a,b,sizeof a);
#define INF 0x3f3f3f3f
#define MOD 1000000007

using namespace std;

typedef long long ll;

vector<string> v[5],tv;
string ts;

int main()
{
    int n=3;
    string s;
    char c;
    for(int i=0;i<n;i++)
    {
        getline(cin,s);
        int len=s.length();
        for(int i=0,f=0;i<len;i++)
        {
            c=s[i];
            if(c==']')
            {
                f=0;
                tv.push_back(ts);
                ts.clear();
            }
            if(f) ts.append(1,c);
            if(c=='[') f=1;
        }
        v[i]=v[n-i+1]=tv;
        tv.clear();
    }

//    for(int i=0;i<5;i++)
//    {
//        for(int j=0;j<v[i].size();j++)
//        {
//            printf("%s ",v[i][j].c_str());
//        }
//        puts("");
//    }

    scanf("%d",&n);
    int a;
    while(n--)
    {
        int f=1; ts.clear();
        for(int i=0;i<5;i++)
        {
            scanf("%d",&a);
            if(!f) continue;
            if(a>v[i].size() || a<=0){f=0; continue;}
            if(i==1) ts.append(1,'(');
            ts.append(v[i][a-1]);
            if(i==3) ts.append(1,')');
        }

        if(!f) puts("Are you kidding me? @\\/@");
        else printf("%s\n",ts.c_str());
    }

    return 0;
}

猜你喜欢

转载自blog.csdn.net/Dream_Weave/article/details/81671494
今日推荐