PAT (Basic Level) 1052 卖个萌

题意

给定若干颜表情组件,每次给一组序号,问是否是合法的,合法的表情什么样?

思路

模拟即可。注意给的序号不仅可能上越界,还可能下越界,即代码33行。数据预处理部分也要下点功夫,能造不少坑。

代码

#include <bits/stdc++.h>
using namespace std;
int main() {
	ios::sync_with_stdio(false);
	cin.tie(nullptr);
	cout.tie(nullptr);
	vector<vector<string>> a(3);
	for (int i = 0; i < 3; ++i) {
		string s;
		getline(cin, s);
		for (int j = 0; j < s.size(); ++j) {
			int lo = j;
			while (lo < s.size() && s[lo] != '[') lo++;
			if (lo >= s.size()) break;
			int hi = lo + 1;
			while (hi < s.size() && s[hi] != ']') hi++;
			if (hi >= s.size()) break;
			string tmp = s.substr(lo + 1, hi - lo - 1);
			a[i].push_back(tmp);
			j = hi;
		}
	}
	int n;
	cin >> n;
	for (int i = 0; i < n; ++i) {
		string res = "";
		vector<int> order = {0, 1, 2, 1, 0};
		bool flag = true;
		for (int j = 0, x; j < 5; ++j) {
			if (j == 1) res += "(";
			if (j == 4) res += ")";
			cin >> x;
			if (x < 1 || x > a[order[j]].size()) 
				flag = false;
			else 
				res += a[order[j]][x- 1];
		}
		if (flag)
			cout << res << '\n';
		else 
			cout << "Are you kidding me? @\\/@\n";
	}
	return 0;
} 

HINT

不定时更新更多题解,Basic Level 全部AC代码,详见 link ! ! !

发布了72 篇原创文章 · 获赞 15 · 访问量 3253

猜你喜欢

转载自blog.csdn.net/abcdefbrhdb/article/details/104623347
今日推荐