题目描述
小明开了一家水果店,出售A、B两种水果。
他每天准备n个水果,其中A、B的数量不定。每天会有n个客人来购买,客人也分为两类,X类客人只买A水果,Y类客人AB两种水果都可。
每当有客人来时,小明会随机从水果篮中取出水果。如果来的是X类客人,但是取出的是B类水果,那么就将取出的B放到一边的盘子里,直到取出A才会卖给X类客人。如果是Y类客人前来购买,当盘子里有B时优先将B售卖给Y,如果没有,就直接将水果篮里取出的水果卖给Y。
小明想知道,他每天准备的水果,能不能满足所有客人的需求。
输入
输入三行数据。
第一行输入1个正整数n(1<=n<=100),表示每天准备的水果数量。
第二行输入一行长度为n,由字母AB组成的字符串,表示小明从水果篮中取出水果的顺序。
第三行输入一行长度为n,由字母X和Y组成的字符串,表示客人到店的顺序。
输出
如果当天的水果能满足所有客人的需求,输出”YES”,否则输出”NO”。
样例输入 Copy
5
ABBAA
YXXXY
样例输出 Copy
NO
简单的逻辑题,耐下心来好好写一写就能做出来。
我的答案:
#include <stdio.h>
#include <string.h>
int main() {
int n,flag=0,j=0,ren=0,m=0,p=0;
char a[100],b[100],c[100];
scanf("%d",&n);
scanf("%s",b);
scanf("%s",a);//a是人,b是水果
for(int i=0; i<n; i++) {
for(j=i; j<n; j++) {//j要从上一次遍览到的位置继续遍览
if(a[i]=='X') {
if(b[j]=='A') {
b[j]='0';
ren++;
break;
} else {
if(b[j]!='0') {
c[m++]='B';
b[j]='0';
continue;
} else continue;
}
}
if(a[i]=='Y') {
for(p=0; p<n; p++) {
if(c[p]=='B') {
c[p]='0';
ren++;
break;
} else {
if(p==n-1) {
b[j]='0';
ren++;
}
}
}
break;
}
}
}
if(ren==n) printf("YES");
else printf("NO");
return 0;
}