題目連結:
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;
}