hnust oj 2204 卖水果

题目描述


小明开了一家水果店,出售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;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值