1001: Tanning Salon 用栈来解决

题目描述

Tan Your Hide, Inc., owns several coin-operated tanning salons. Research has shown that if a customer arrives and there are no beds available, the customer will turn around and leave, thus costing the company a sale. Your task is to write a program that tells the company how many customers left without tanning.

输入

The input consists of data for one or more salons, followed by a line containing the number 0 that signals the end of the input. Data for each salon is a single line containing a positive integer, representing the number of tanning beds in the salon, followed by a space, followed by a sequence of uppercase letters. Letters in the sequence occur in pairs. The first occurrence indicates the arrival of a customer, the second indicates the departure of that same customer. No letter will occur in more than one pair. Customers who leave without tanning always depart before customers who are currently tanning. There are at most 20 beds per salon.

输出

For each salon, output a sentence telling how many customers, if any, walked away. Use the exact format shown below.
Note: No invisible characters in the end of each sentence except '\n'.

样例输入

2 ABBAJJKZKZ3 GACCBDDBAGEE3 GACCBGDDBAEE1 ABCBCA0

样例输出

All customers tanned successfully.1 customer(s) walked away.All customers tanned successfully.2 customer(s) walked away.



大致的题目意思是医院里面的床位固定,随后输入的字符串,来统计,相同出现的字母表示后来走出,问有缺失多少人没有服务
可以用栈来写,但还没实现 先把数组的代码挂上吧
#include<iostream>
#include<cstring>
#include<string>
using namespace std;
int main() {
	bool flag,flag1;
	//统计的字符串,一个用于输入,一个用于统计
	char s[20],a[20];
	int i,j,n,count;
	//输入床位有多少
	while(cin>>n&&n) {
		count=0;
		cin>>a;
		//初始化统计的,也可以用memset memset(s,'a',sizeof(s));
		for(i=0;i<20;i++)
			s[i]='a';
		//字符串每一位都来统计
		for(i=0;i<strlen(a);i++) {
			flag = flag1=false;
			for(j=0;j<n;j++) {
				//如果前面的已经输入,表示已经在服务,设flag1为true
			
				//如果有空床位,则设flag 为true;
				if(s[j]=='a')
				{
					flag=true;
					break;
			}
					if(s[j]==a[i]) {
					flag1=true;
					break;
				}
			}
			//如果有空床位,则把空床位给他
			if(flag){
				s[j]=a[i];
			}
			//如果前面已经在服务,则这个人出来,床位初始化
		 else if(flag1)
				s[j]='a';
			//否则没有服务的人加1
		 else
			 count++;
	
		}
		//count要/2 因为后面没服务的话,人后面肯定全部走出,所以要除2
		if(count)
			cout<<count/2<<" customer(s) walked away.";
		else
			cout<<"All customers tanned successfully.";
		cout<<endl;
	}
	return 0;
}
可以看这个博客,思路基本上差不多
http://blog.csdn.net/libin56842/article/details/20238601
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值