1. 程式人生 > >1052. 賣個萌 (20)-PAT乙級真題

1052. 賣個萌 (20)-PAT乙級真題

萌萌噠表情符號通常由“手”、“眼”、“口”三個主要部分組成。簡單起見,我們假設一個表情符號是按下列格式輸出的:
[左手]([左眼][口][右眼])[右手]
現給出可選用的符號集合,請你按使用者的要求輸出表情。
輸入格式:
輸入首先在前三行順序對應給出手、眼、口的可選符號集。每個符號括在一對方括號[]內。題目保證每個集合都至少有一個符號,並不超過10個符號;每個符號包含1到4個非空字元。
之後一行給出一個正整數K,為使用者請求的個數。隨後K行,每行給出一個使用者的符號選擇,順序為左手、左眼、口、右眼、右手——這裡只給出符號在相應集合中的序號(從1開始),數字間以空格分隔。
輸出格式:
對每個使用者請求,在一行中輸出生成的表情。若使用者選擇的序號不存在,則輸出“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? @\/@
分析:
因為不知道一行有多少個表情,所以用一個string型別的不定長二維陣列vector儲存表情包,以及可以呼叫v.size()順便解決不知道一行有多少個表情的問題~~
不定長陣列共三行,分別對應輸入用例的三行~只不過在儲存如陣列之前把它們的方括號去掉在儲存~這裡可以用string的substr
方法實現~然後根據輸入的數字序號輸出對應的表情~耶耶耶能從這道題裡面複習好多知識點呢~~~
注意:
1.“Are you kidding me? @\/@”的’\’是轉義字元,想要輸出’\’就要用’\\’表示~

2.第一個測試點裡麵包含了空格,所以用cin會失敗的,要用getline才能讀入一行字串~

#include <iostream>
#include <vector>
using namespace std;
int main() {
    vector<vector<string> > v;
    for(int i = 0; i < 3; i++) {
        string s;
        getline(cin, s);
        vector<string> row;
        int j = 0, k = 0;
        while(j < s.length()) {
            if(s[j] == '[') {
                while(k++ < s.length()) {
                    if(s[k] == ']') {
                        row.push_back(s.substr(j+1, k-j-1));
                        break;
                    }
                }
            }
            j++;
        }
        v.push_back(row);
    }
    int n;
    cin >> n;
    for(int i = 0; i < n; i++) {
        int a, b, c, d, e;
        cin >> a >> b >> c >> d >> e;
        if(a > v[0].size() || b > v[1].size() || c > v[2].size() || d > v[1].size() || e > v[0].size() || a < 1 || b < 1 || c < 1 || d < 1 || e < 1) {
            cout << "Are you kidding me? @\\/@" << endl;
            continue;
        }
        cout << v[0][a-1] << "(" << v[1][b-1] << v[2][c-1] << v[1][d-1] << ")" << v[0][e-1] << endl;
    }
    return 0;
}


相關推薦

1052. (20)-PAT乙級

萌萌噠表情符號通常由“手”、“眼”、“口”三個主要部分組成。簡單起見,我們假設一個表情符號是按下列格式輸出的:[左手]([左眼][口][右眼])[右手]現給出可選用的符號集合,請你按使用者的要求輸出表

PAT Basic 1052. (20)(C語言實現)

, CSDN內容暫時不更新(將來有計劃更新), 請前往連結檢視最新內容. 歡迎star 我的repo題目萌萌噠表情符號通常由“手”、“眼”、“口”三個主要部分組成。簡單起見,我們假設

PAT】(B)1052 (20)

『題目』 萌萌噠表情符號通常由“手”、“眼”、“口”三個主要部分組成。簡單起見,我們假設一個表情符號是按下列格式輸出的: [左手]([左眼][口][右眼])[右手] 現給出可選用的符號集合,請你按使用者的要求輸出表情。 輸入格式: 輸入首先在前三行順序對應給出手、

PAT1052. (20)

萌萌噠表情符號通常由“手”、“眼”、“口”三個主要部分組成。簡單起見,我們假設一個表情符號是按下列格式輸出的: 左手[右手] 現給出可選用的符號集合,請你按使用者的要求輸出表情。 輸入格式: 輸入首先在前三行順序對應給出手、眼、口的可選符號集。每個符號括

PAT.1052. (20)--易錯點

題目描述: 萌萌噠表情符號通常由“手”、“眼”、“口”三個主要部分組成。簡單起見,我們假設一個表情符號是按下列格式輸出的: 左手[右手] 現給出可選用的符號集合,請你按使用者的要求輸出表情。 輸入格式: 輸入首先在前三行順序對應給出手、眼、口的可選符號

1068. 萬綠叢中一點紅(20)-PAT乙級

通過這個我們可以學到 1、對於怎麼判斷一個m*n的矩陣中每一個元素有沒有八個方向上的相鄰元素 int dir[8][2] = { {-1, -1}, //橫座標-1 縱座標-1 ,這是元素左下角的元素 {-1, 0}, //橫座標-1 縱座標不變,這是元素正左邊的元素 {-1, 1}, //

1074. 宇宙無敵加法器(20)-PAT乙級

1、 string ss1(s.length() - s1.length(), ‘0’); s1 = ss1 + s1; 這行實現的是在s1前面填0使s1與s等長 2、進位制轉換 for(int i = s.length() - 1; i >= 0; i–) { int mod = s

1034. 有理數四則運算(20)-PAT乙級

1034. 有理數四則運算(20)本題要求編寫程式,計算2個有理數的和、差、積、商。輸入格式:輸入在一行中按照“a1/b1 a2/b2”的格式給出兩個分數形式的有理數,其中分子和分母全是整型範圍內的整數

1058. 選擇題(20)-PAT乙級

1058. 選擇題(20)批改多選題是比較麻煩的事情,本題就請你寫個程式幫助老師批改多選題,並且指出哪道題錯的人最多。 輸入格式: 輸入在第一行給出兩個正整數N(<=1000)和M(<

1084. 外觀數列 (20) PAT乙級

1084. 外觀數列 (20)外觀數列是指具有以下特點的整數序列:d, d1, d111, d113, d11231, d112213111, ... 它從不等於 1 的數字 d 開始,序列的第 n+1 項是對第 n 項的描述。比如第 2 項表示第 1 項有 1 個 d,所以

1002. 寫出這個數 (20)-PAT乙級

讀入一個自然數n,計算其各位數字之和,用漢語拼音寫出和的每一位數字。輸入格式:每個測試輸入包含1個測試用例,即給出自然數n的值。這裡保證n小於10100。 輸出格式:在一行內輸出n的各位數字之和的每一位,拼音數字間有1 空格,但一行中最後一個拼音數字後沒有空格。 輸入樣例:1234567890987654

1049. 數列的片段和(20) PAT乙級

給定一個正數數列,我們可以從中擷取任意的連續的幾個數,稱為片段。例如,給定數列{0.1, 0.2, 0.3, 0.4},我們有(0.1) (0.1, 0.2) (0.1, 0.2, 0.3) (0.1, 0.2, 0.3, 0.4) (0.2) (0.2, 0.3) (0.2, 0.3, 0.4) (0.

1053. 住房空置率 (20) PAT乙級

1053. 住房空置率 (20) 在不打擾居民的前提下,統計住房空置率的一種方法是根據每戶用電量的連續變化規律進行判斷。判斷方法如下: 在觀察期內,若存在超過一半的日子用電量低於某給定的閾值e,則該住房為“可能空置”; 若觀察期超過某給定閾值D天,且滿足上一個條件,

1048. 數字加密(20) PAT乙級

1048. 數字加密(20) 本題要求實現一種數字加密方法。首先固定一個加密用正整數A,對任一正整數B,將其每1位數字與A的對應位置上的數字進行以下運算:對奇數位,對應位的數字相加後對13取餘——這裡用J代表10、Q代表11、K代表12;對偶數位,用B的數字減去A的數

PAT 1074. 宇宙無敵加法器(20)-PAT乙級

1074. 宇宙無敵加法器(20)地球人習慣使用十進位制數,並且預設一個數字的每一位都是十進位制的。而在PAT星人開掛的世界裡,每個數字的每一位都是不同進位制的,這種神奇的數字稱為“PAT數”。每個PA

1078. 字串壓縮與解壓 (20) PAT乙級

1078. 字串壓縮與解壓 (20) 文字壓縮有很多種方法,這裡我們只考慮最簡單的一種:把由相同字元組成的一個連續的片段用這個字元和片段中含有這個字元的個數來表示。例如 ccccc 就用 5c 來表示。如果字元沒有重複,就原樣輸出。例如 aba 壓縮後仍然是 aba。

1072. 開學寄語(20)--PAT乙級java實現

個人部落格:小景哥哥 1072. 開學寄語(20)–PAT乙級真題java實現 下圖是上海某校的新學期開學寄語:天將降大任於斯人也,必先刪其微博,卸其QQ,封其電腦,奪其手機,收其ipad,斷其wifi,使其百無聊賴,然後,淨面、理髮、整衣,然後思過、讀書、

1029. 舊鍵盤(20)-PAT乙級

1029. 舊鍵盤(20)舊鍵盤上壞了幾個鍵,於是在敲一段文字的時候,對應的字元就不會出現。現在給出應該輸入的一段文字、以及實際被輸入的文字,請你列出肯定壞掉的那些鍵。輸入格式:輸入在2行中分別給出應該

PAT 1073. 多選題常見計分法(20)-PAT乙級

1073. 多選題常見計分法(20)批改多選題是比較麻煩的事情,有很多不同的計分方法。有一種最常見的計分方法是:如果考生選擇了部分正確選項,並且沒有選擇任何錯誤選項,則得到50%分數;如果考生選擇

PAT乙級 1052

萌萌噠表情符號通常由“手”、“眼”、“口”三個主要部分組成。簡單起見,我們假設一個表情符號是按下列格式輸出的: [左手]([左眼][口][右眼])[右手] 現給出可選用的符號集合,請你按使用者的要求輸出表情。 輸入格式: 輸入首先在前三行順序對應給出手、眼、口的可選符號集。每個符