1 条题解

  • 0
    @ 2025-4-14 18:45:31

    C :

    #include<stdio.h>
    #include<string.h>
    int main()
    {
    	char c[50];
    	char str[10000];
    	char lost[5000];
    	int n,m,i,ii,iii,iiii,go,gogo,left;
    	//n个床位,目前正在使用第m个,i是循环变量
    	while(gets(str))
    	{
    		if(str[0]=='0')
    			break;
    		n=str[0]-48;
    		m=0;
    		left=0;
    		iii=1;
    		for(i=1;i<=n;i++)
    		{
    			c[i]='0';
    		}
    		for(i=1;i<=50;i++)
    		{
    			lost[i]='0';
    		}
    		for(i=2;i<strlen(str);i++)
    		{
    			go=0;
    			for(ii=1;ii<=n;ii++)
    			{
    				if(c[ii]==str[i])
    				{
    					c[ii]='0';
    					go=1;
    					for(iiii=1;iiii<50;iiii++)
    					{
    						if(lost[iiii]!='0')
    						{
    							c[ii]=lost[iiii];
    							lost[iiii]='0';
    						}
    					}
    					break;
    				}
    				if(c[ii]=='0')
    				{
    					c[ii]=str[i];
    					go=1;
    					break;
    				}
    			}
    			if(go==0)
    			{
    				gogo=0;
    				for(ii=1;ii<50;ii++)
    					if(lost[ii]==str[i])
    					{
    						lost[ii]='0';
    						left++;
    						gogo=1;
    					}
    				if(gogo==0);
    				{
    					lost[iii]=str[i];
    					iii++;
    				}
    			}
    		}
    		if(left==0)
    			printf("All customers tanned successfully.\n");
    		else
    			printf("%d customer(s) walked away.\n",left);
    	}
    	return 0;
    }
    

    C++ :

    #include <iostream>
    #include <string.h>
    using namespace std;
    int bed[30];
    int cus[30];
    int main(){
        int n, l, ans;
        string list;
        while(cin>>n, n){
            cin>>list;
            ans = 0; l = list.length();
            memset(bed, 0, sizeof(bed));
            memset(cus, 0, sizeof(cus));
            for (int i = 0; i < l; i++){
                int num = list[i] - 'A' + 1;
                if (!cus[num]){
                    cus[num] = n + 1;
                    for (int j = 1; j <= n; j++) if (!bed[j]){
                        bed[j] = num;
                        cus[num] = j;
                        break;
                    }
                }else{
                    if (cus[num] > n){
                        ans++;
                        cus[num] = 0;
                    }else{
                        bed[cus[num]] = 0;
                        for (int j = 1; j <= 26; j++) if (cus[j] > n){
                            bed[cus[num]] = j;
                            cus[j] = cus[num];
                            break;
                        }
                        cus[num] = 0;
                    }
                }
            }
            if (ans) cout<<ans<<" customer(s) walked away."<<endl;
            else cout<<"All customers tanned successfully."<<endl;
        }
        return 0;
    }
    
    • 1

    信息

    ID
    3575
    时间
    1000ms
    内存
    128MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者