模拟题。
一家澡堂,床位有限,有一连串客人来,叫你统计最终有多少名客人扫兴回去了,(其实就是看看有多少个客人流失)
一张床目前只能睡一个人,走了之后其他人才能用这张床。
要注意的是如果B连续来了两次都没有空床位叫她洗澡,那只能算一个人
#include<iostream> #include<cstdio> #include<cstring> using namespace std; const int Maxsize = 550; int main() { int n; char bed[35]; int cnt,cur; char data[Maxsize]; char ch; char leave[Maxsize]; while(cin>>n && n) { cur = 0; int sum = 0; memset(bed,'0',sizeof(bed)); memset(data,'0',sizeof(bed)); bool flag = false; bool stag; cin>>data; for(int i = 0 ; data[i] != '\0' ; i++) { flag = false; cnt = 0; for(int j = 0 ; j < n ; j++) { if(data[i] == bed[j]) { bed[j] = '0'; flag = true; break; } } for(int j = 0 ; j < n ; j++) { if(bed[j] == '0') { cnt++; } } if(cnt > 0 && !flag) { for(int j = 0 ; j < n ; j++) { if(bed[j] == '0') { bed[j] = data[i]; break; } } } else if(cnt == 0 && !flag) { stag = false; for(int j = 0 ; j < cur ; j++) { if(leave[j] == data[i]) { stag = true; break; } } if(!stag) { leave[cur++] = data[i]; sum++; } } } if(sum == 0) { cout<<"All customers tanned successfully.\n"; } else { printf("%d customer(s) walked away.\n",sum); } } return 0; }