题目描述
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