日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

【最详细解析】1052 卖个萌 (20分)_28行代码AC

發(fā)布時(shí)間:2024/2/28 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【最详细解析】1052 卖个萌 (20分)_28行代码AC 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

立志用更少的代碼做更高效的表達(dá)


Pat乙級(jí)最優(yōu)化代碼+題解+分析匯總——>傳送門(mén)


萌萌噠表情符號(hào)通常由“手”、“眼”、“口”三個(gè)主要部分組成。簡(jiǎn)單起見(jiàn),我們假設(shè)一個(gè)表情符號(hào)是按下列格式輸出的:

[左手]([左眼][口][右眼])[右手]
現(xiàn)給出可選用的符號(hào)集合,請(qǐng)你按用戶(hù)的要求輸出表情。

輸入格式:
輸入首先在前三行順序?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,為用戶(hù)請(qǐng)求的個(gè)數(shù)。隨后 K 行,每行給出一個(gè)用戶(hù)的符號(hào)選擇,順序?yàn)樽笫帧⒆笱邸⒖凇⒂已邸⒂沂帧@里只給出符號(hào)在相應(yīng)集合中的序號(hào)(從 1 開(kāi)始),數(shù)字間以空格分隔。

輸出格式:
對(duì)每個(gè)用戶(hù)請(qǐng)求,在一行中輸出生成的表情。若用戶(hù)選擇的序號(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? @/@


難點(diǎn):

  • 字符為不定長(zhǎng)字符(有的甚至是漢字),無(wú)法用逐個(gè)遍歷的形式查找賦值。
    解決辦法:find函數(shù)查找+substr函數(shù)剪切

  • 字符串?dāng)?shù)量未知
    解決辦法:vector動(dòng)態(tài)數(shù)組存儲(chǔ)。

  • 輸出時(shí),無(wú)法輸出右斜杠。
    解決辦法:再加一個(gè)右斜杠

話(huà)不多說(shuō)看代碼。


代碼

#include<bits/stdc++.h> using namespace std; int main() {vector<string>v[3];for(int j = 0; j < 3; j++) {string s; getline(cin, s);int len = s.length();int find1 = 0, find2 = 0;while(1) {find1 = s.find('[', find1);find2 = s.find(']', find2);if(find1 == -1 || find2 == -1) break;v[j].push_back(s.substr(find1+1, find2-find1-1));find1++; find2++; }}int n; cin>>n; while(n--) {int a1, a2, a3, a4, a5; cin >> a1 >> a2 >> a3 >> a4 >> a5;a1 -= 1; a2 -= 1; a3 -= 1; a4 -= 1; a5 -= 1;if(a1 >= v[0].size() || a2 >= v[1].size() || a3 >= v[2].size() || a4 >= v[1].size() || a5 >= v[0].size()) {cout << "Are you kidding me? @\\/@" << '\n';} else {cout << v[0][a1] << '(' << v[1][a2] << v[2][a3] << v[1][a4] << ')' << v[0][a5] << '\n';}} return 0; }

耗時(shí)


總結(jié)

一道非常好的題, 自認(rèn)為如果在考試時(shí)碰到絕對(duì)沒(méi)辦法拿滿(mǎn)分。

讓我們更熟練的鞏固了find()和substr()嵌套vector的用法。值得思考。

總結(jié)

以上是生活随笔為你收集整理的【最详细解析】1052 卖个萌 (20分)_28行代码AC的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。