題目
萌萌噠表情符號(hào)通常由“手”、“眼”仲义、“口”三個(gè)主要部分組成秃殉。簡(jiǎn)單起見饥伊,我們假設(shè)一個(gè)表情符號(hào)是按下列格式輸出的:
[左手]([左眼][口][右眼])[右手]
現(xiàn)給出可選用的符號(hào)集合草添,請(qǐng)你按用戶的要求輸出表情痊夭。
輸入格式:
輸入首先在前三行順序?qū)?yīng)給出手毅厚、眼愕够、口的可選符號(hào)集偷俭。每個(gè)符號(hào)括在一對(duì)方括號(hào) []
內(nèi)浪讳。題目保證每個(gè)集合都至少有一個(gè)符號(hào),并不超過(guò) 10 個(gè)符號(hào)社搅;每個(gè)符號(hào)包含 1 到 4 個(gè)非空字符驻债。
之后一行給出一個(gè)正整數(shù) K,為用戶請(qǐng)求的個(gè)數(shù)形葬。隨后 K 行合呐,每行給出一個(gè)用戶的符號(hào)選擇,順序?yàn)樽笫煮弦浴⒆笱厶适怠⒖凇⒂已鄄蟆⒂沂帧@里只給出符號(hào)在相應(yīng)集合中的序號(hào)(從 1 開始)拆祈,數(shù)字間以空格分隔。
輸出格式:
對(duì)每個(gè)用戶請(qǐng)求倘感,在一行中輸出生成的表情放坏。若用戶選擇的序號(hào)不存在,則輸出 Are you kidding me? @\/@
老玛。
輸入樣例:
[╮][╭][o][~\][/~] [<][>]
[╯][╰][^][-][=][>][<][@][⊙]
[Д][▽][_][ε][^] ...
4
1 1 2 2 2
6 8 1 5 5
3 3 4 3 3
2 10 3 9 3
輸出樣例:
╮(╯▽╰)╭
<(@Д=)/~
o(^ε^)o
Are you kidding me? @\/@
通過(guò)代碼
#include <iostream>
#include <vector>
using namespace std;
int main () {
vector<string> data[3];
string line;
for (int j = 0; j < 3; j++) {
getline(cin, line);
for (int i = 0, k = 0, count = 0; i < line.length(); count++) {
while ( i < line.length() && line[i] != '[')i++;
while ( k < line.length() && line[k] != ']')k++;
if (i < line.length() && k < line.length()) {
data[j].push_back(line.substr(i + 1, k - 1 - i));
k++;
i = k;
} else {
break;
}
}
}
int n;
cin >> n;
for (int i = 0; i < n; i++) {
int a[5];
for (int j = 0; j < 5; j++) {
cin >> a[j];
a[j]--;
}
if (a[0] < data[0].size() && a[1] < data[1].size() && a[2] < data[2].size() && a[3] < data[1].size() && a[4] < data[0].size())
cout << data[0][a[0]] << "(" << data[1][a[1]] << data[2][a[2]] << data[1][a[3]] << ")" << data[0][a[4]] << endl;
else printf("Are you kidding me? @\\/@\n");
}
}
思路與注意
這道題其實(shí)就是分析字符串淤年,把所有
[]
內(nèi)的字符串
全都存起來(lái)钧敞,然后用戶輸入序號(hào),根據(jù)序號(hào)按照條件輸出就可以了注意
[]
內(nèi)不一定只有一個(gè)字符麸粮,而且可能是寬字符(直接保存成string就行)注意用戶輸入的序號(hào)是從1開始的
注意輸出格式(左手右邊溉苛、右手左邊有半角括號(hào))
[左手]([左眼][口][右眼])[右手]
反思與評(píng)價(jià)
這道題思路很清晰,利用vector會(huì)很方便
寫題的時(shí)候一直認(rèn)為substr()函數(shù)的兩個(gè)參數(shù)都是index弄诲,一直出錯(cuò)(手動(dòng)笑哭)