天天看点

PAT Basic Level 1052 卖个萌 (20 分)

题目链接:

https://pintia.cn/problem-sets/994805260223102976/problems/994805273883951104

AC代码:

#include <iostream>
#include<cstring>

using namespace std;


int get (string hand,string a[]){//用于把初始三个字符串转换成不含[]的三个string数组
    int k=0;
    for(int i=0;i<hand.size();i++){
        if(hand[i]!='['&&hand[i]!=' '&&hand[i]!=']')
            a[k]+=hand[i];
        if(hand[i]==']')
            k++;
    }
    return k;
}



string s[3];
string shou[11],yan[11],kou[11];
int main()
{
	for (int i=0;i<3 ;i++ )
	{
		getline(cin,s[i]);
	}

	int len1=get(s[0],shou);
	int len2=get(s[1],yan);
	int len3=get(s[2],kou);

	int N;
	cin>>N;
	int num[N][5];
	for (int i=0;i<N ;i++ )
	{
		for (int j=0;j<5 ;j++ )
		{
			cin>>num[i][j];
		}
	}

	for (int i=0;i<N ;i++ )
	{
		int a=num[i][0],b=num[i][1],c=num[i][2],d=num[i][3],e=num[i][4];
		 //  就是这里要加上大于0 的判断
		if (a<=len1 && b<=len2 && c<=len3 && d<=len2 && e<=len1&&a>0&&b>0&&c>0&&d>0&&e>0)
		{
			cout<<shou[a-1]<<"("<<yan[b-1]<<kou[c-1]<<yan[d-1]<<")"<<shou[e-1]<<endl;
		}
		else cout<<"Are you kidding me? @\\/@"<<endl; // 注意这里\ 转义字符 要加\
	}

	return 0;

}
           

 二刷:

#include <iostream>
#include <cstring>
#include <cstdio>
#include <cmath>
using namespace std;

char hand[10][5], eye[10][5], mouse[10][5];
int get_symbol(char p[][5]) {
	char c, i = 0, j = 0;
	while ((c = getchar()) != '\n') {
		if (c == '[') {
			while ((c = getchar()) != ']') {
				if (c == '\n')
					return (i - 1);
				p[i][j] = c;
				j++;
			}
			p[i][j] = '\0';
			i++;
			j = 0;
		}
	}
	return (i - 1);
}

int main() {
	int hand_sum, eye_sum, mouse_sum;
	int a1, a2, a3, a4, a5;
	hand_sum = get_symbol(hand);
	eye_sum = get_symbol(eye);
	mouse_sum = get_symbol(mouse);
	int N;
	cin >> N;
	while (N--) {
		scanf("%d%d%d%d%d", &a1, &a2, &a3, &a4, &a5);
		if (--a1 > hand_sum || --a5 > hand_sum || --a2 > eye_sum || --a4 > eye_sum || --a3 > mouse_sum)
			printf("Are you kidding me? @\\/@\n");//不能加\n
			                                      //puts输出包含\n
			                                      //printf输出不包含\n
		else if (a1 < 0 || a2 < 0 || a3 < 0 || a4 < 0 || a5 < 0)
			printf("Are you kidding me? @\\/@\n");
		else
			printf("%s(%s%s%s)%s\n", hand[a1], eye[a2], mouse[a3], eye[a4], hand[a5]);
	}
	return 0;
}