PAT B -1052 vender M (20 puntos)

Haga clic en el enlace completo Resumen solución PAT B -AC

Título:
Meng Meng piridazin emoticonos por lo general consiste en "mano", "ojos", "boca" de tres partes principales. Por simplicidad, se asume una expresión simbólica se emite en el siguiente formato:

[左手]([左眼][][右眼])[右手]

Ahora bien, dada la elección de un conjunto de símbolos, que la salida expresión requisitos del usuario.

: Formato de entrada
para la entrada correspondiente a las tres primeras líneas de los disparos anteriores, seleccionables conjunto de símbolos ojos, la boca. Cada símbolo entre corchetes [] dentro. Título asegurar que cada sistema tiene al menos un símbolo, el símbolo no es más de 10; cada símbolo contiene de uno a cuatro caracteres no nulo.

Después de la línea se le da un número entero positivo K, el número de solicitudes de los usuarios. Entonces K filas cada usuario se le da una selección de símbolos, el orden de la mano izquierda, el ojo izquierdo, la boca, ojo, mano - sólo para dar el número de símbolo en el conjunto respectivo (a partir de 1), un espacio entre los números separada.

Formato de salida:
una solicitud para cada usuario generado en la expresión de la línea de salida. Si el usuario selecciona no existe el número de serie, la salida

¿Me estás tomando el pelo? @ / @.

de entrada de la muestra:

[][][o][~\][/~]  [<][>]
 [][][^][-][=][>][<][@][]
[Д][][_][ε][^]  ...
4
1 1 2 2 2
6 8 1 5 5
3 3 4 3 3
2 10 3 9 3

Resultado de muestra:

(╯▽╰)<(=)/~
o(^ε^)o
Are you kidding me? @\/@

Mi código:

#include<iostream>
#include<cstdio>
#include<vector>
#include<string>
#include<set>
#include<map>
#include<algorithm>
#include<cmath>
#include<ctime>
#include<cstring>
#include<sstream>
using namespace std;
//有的时候题目是一起做的,所以会有不需要的头文件

int main()
{
    string hand[11],eye[11],mouth[11];
    string kidding="Are you kidding me? @\\/@";
    int num_hand=0,num_eye=0,num_mouth=0;

    string temp;
    //hand
    getline(cin,temp);
    while(temp.find('[')!=-1)
    {
        int pos1=temp.find('[');
        int pos2=temp.find(']');
        hand[num_hand++].append(temp,pos1+1,pos2-pos1-1);
        temp.erase(pos1,pos2-pos1+1);
    }
    //eye
    getline(cin,temp);
    while(temp.find('[')!=-1)
    {
        int pos1=temp.find('[');
        int pos2=temp.find(']');
        eye[num_eye++].append(temp,pos1+1,pos2-pos1-1);
        temp.erase(pos1,pos2-pos1+1);
    }
    //mouth
    getline(cin,temp);
    while(temp.find('[')!=-1)
    {
        int pos1=temp.find('[');
        int pos2=temp.find(']');
        mouth[num_mouth++].append(temp,pos1+1,pos2-pos1-1);
        temp.erase(pos1,pos2-pos1+1);
    }

    int N;
    cin>>N;
    for(int i=0;i<N;i++)
    {
        int a=11,b=11,c=11,d=11,e=11;
        scanf("%d %d %d %d %d",&a,&b,&c,&d,&e);
        if(a>num_hand||b>num_eye||c>num_mouth||d>num_eye||e>num_hand||
           a<1||b<1||c<1||d<1||e<1)
            cout<<kidding<<endl;
        else
            cout<<hand[a-1]<<"("<<eye[b-1]<<mouth[c-1]<<eye[d-1]<<")"<<hand[e-1]<<endl;
    }

    return 0;
}

Nota que el caso de abcde entrada <1

Publicado 82 artículos originales · ganado elogios 1 · vistas 1683

Supongo que te gusta

Origin blog.csdn.net/qq_34451909/article/details/104836384
Recomendado
Clasificación