PAT B1052 卖个萌(C++)

PAT甲级目录 | PAT乙级目录

题目描述

B1052 卖个萌

解题思路

字符串处理,根据括号判断位置,保存对应符号到数组中,格式化输出。

易错点

  • 输出表情中应有圆括号
  • 有效序号范围为 $ 1 \leq x \leq len$
  • "Are you kidding me? @\\/@" 输出反斜杠需要用转义字符

也许陌生的知识点

  • str += c;
    • 字符串拼接
    • 需要的头文件:string
  • getline(cin, str);
    • 输入一整行的字符串,包括空格等
    • 需要的头文件:iostream

代码示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include <iostream>
#include <cstdio>
#include <string>
using namespace std;
int main(){
string list[3][20], s;
int N, len[3] = {0};
for(int i = 0, j = 0, cnt = 0; i < 3; i++, j = 0, cnt = 0){
getline(cin, s);
while(j < s.length()){
if(s[j++] == '['){
while(j < s.length() && s[j] != ']') list[i][cnt] += s[j++];
cnt++;
}
}
len[i] = cnt;
}
cin >> N;
for(int i = 0; i < N; i++){
int valid = 0, x1, x2, x3, x4, x5;
scanf("%d %d %d %d %d", &x1, &x2, &x3, &x4, &x5);
if(x1 >= 1 && x2 >= 1 && x3 >= 1 && x4 >= 1 && x5 >= 1){
if(x1 <= len[0] && x2 <= len[1] && x3 <= len[2] && x4 <= len[1] && x5 <= len[0]) valid = 1;
}
if(valid) cout << list[0][x1-1] << '(' << list[1][x2-1] << list[2][x3-1] << list[1][x4-1] << ')' << list[0][x5-1] << endl;
else cout << "Are you kidding me? @\\/@" << endl;
}
return 0;
}