题意:给出房间数n,和客人的来去顺序,求没有入住的客人数目。
代码如下:
#include<iostream>
using namespace std;
const int MAX=60;
int main()
{
int n,i,id,ans; //id是把代表客人的字母换成int型的值。
char str[MAX];
bool vis[MAX],tan[MAX];//vis代表客人的来和去。tan代表客房是否被利用。
while(cin>>n && n)
{
memset(vis,0,sizeof(vis));
memset(tan,0,sizeof(tan));
cin>>str;
ans=0;
for(i=0;i<strlen(str);i++)
{
id=str[i]-'A';
if(!vis[id])
{
vis[id]=true;
if(n>0)
{
n--;
tan[id]=true;
}
else
ans++;
}
else
{
if(tan[id]) n++; //客人退房了。所以可以利用的客房数加1.呵呵
}
}
if(ans==0)
printf("All customers tanned successfully.\n");
else
printf("%d customer(s) walked away.\n",ans);
}
return 0;
}