Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
水题已过,虽然WA了好几次..想明白所有状况就好了,顺便感谢大神提供的测试数据#include<stdio.h> #include<string.h> /*0表示新来的,1表示入住用户,2表示等待用户*/ /*测试用数据 3 AHFYXCSYIFDACGGDXSIH */ int main() { int n; char s[500]; int cus[500]= {0}; int wait[500]= {0}; int waiting; int count; int point; int length; int member; int num; while(1) { waiting=0; point=0; member=0; scanf("%d",&n); if(n==0) break; scanf("%s",s); num=n; count=0; length=strlen(s); for(int i=0; i<length; i++) { //printf("%c来到前台\n",s[i]); //printf("s[i]==%d\n",s[i]); if(cus[s[i]]==1) { //printf("%c退房\n",s[i]); cus[s[i]]==0; num++; } else if(cus[s[i]]==2) { //printf("%c离开\n",s[i]); cus[s[i]]=0; for(int j=0; j<member; j++) { if(wait[j]==s[i]) wait[j]=0; } waiting--; count++; } else if(cus[s[i]]==0) { if(num>0) { if(waiting>0) { while(wait[point]==0) point++; //printf("%c等待后入住\n",wait[point]); //printf("wait[point]=%d\n",wait[point]); //printf("point=%d\n",point); cus[wait[point]]=1; num--; point++; //printf("%c等待\n",s[i]); cus[s[i]]=2; wait[member++]=s[i]; //printf("wait[member]=%d\n",wait[member-1]); } else { //printf("%c入住\n",s[i]); cus[s[i]]=1; num--; } } else { //printf("%c等待\n",s[i]); cus[s[i]]=2; wait[member++]=s[i]; //printf("wait[member]=%d\n",wait[member-1]); waiting++; } } } if(count==0) { printf("All customers tanned successfully.\n"); } else { printf("%d customer(s) walked away.\n",count); } memset(s,'\0',sizeof(s)); memset(wait,0,sizeof(wait)); memset(cus,0,sizeof(cus)); } return 0; } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator