• FZU 电动车通行证制度


    初始思路:

          是定义了两个数组,一个储存进去车辆的信息,另一个储存的是出去的车辆的信息,这样导致每次进去都需要查找车辆以前是否出去过,若出去过需要清楚出去信息,若车辆需  要  出去,又要查找该车辆是否进去过,若进去过要清楚进去的信息,以至于最终也不知道哪里出错了。

    后来思路:

         借鉴了别人的代码,恍然大悟,只需要用一个数组来标记汽车是否出去或进来,令flag=1是进入,flag=0是出去

    #include<stdio.h>
    #include<map>
    #include<string.h>
    using namespace std;
    
    struct Node
    {
        int flag;//1是进入了的,0出去的
        char nam[20];
    }car[10000];
    
    int cas1;
    
    int Find(char name[])
    {
        int i;
        for (i=0;i<cas1;i++)
        {
            if(!strcmp(car[i].nam,name))
            {
                return i;
            }
        }
        return i;
    }
    
    int main()
    {
        int T;
        int cas=1,t,i;
        char str[10],str2[20];
        scanf("%d",&T);
        while(T--)
        {
            cas1=0;
            printf("Case %d:\n",cas++);
            while(1)
            {
            
                    
                scanf("%s",str);
                if(!strcmp(str,"EXIT")) break;
                
                if(!strcmp(str,"IN"))
                {
                    scanf("%s",str2);
                    t=Find(str2);
                    if(t==cas1)//以前没有出现的车要进来
                    {
                        strcpy(car[cas1].nam,str2);
                        car[cas1].flag=1;
                        cas1++;
                    }
                    else//以前进来过的
                    {
                        if(car[t].flag==1)
                        {
                            printf("Error\n");
                        }
                        else//出去了的->进去
                        {
                            car[t].flag=1;
                        }
                    }
                }
                else if(!strcmp(str,"OUT"))
                {
                    scanf("%s",str2);
                    t=Find(str2);
                    if(t==cas1)
                    {
                        strcpy(car[cas1].nam,str2);
                        car[cas1].flag=0;
                        cas1++;
                    }
                    else
                    {
                        if(car[t].flag==0)
                        {
                            printf("Error\n");
                        }
                        else
                        {
                            car[t].flag=0;
                        }
                    }
                }
                else 
                {
                    for (i=0;i<cas1;i++)
                    {
                        if(car[i].flag) printf("%s\n",car[i].nam);
                    }
                }
            }
        }
        return 0;
    }
  • 相关阅读:
    Ducking
    MINITAB(二)
    JFreechart
    linux命令0424
    JAVA哈哈镜
    HTML(四)
    The 3n+1 problem
    [转载]:【读书笔记】.NET本质论
    ER图基本步骤
    [从架构到设计]第一回:设计,应该多一点(转载)
  • 原文地址:https://www.cnblogs.com/zsboy/p/2592412.html
Copyright © 2020-2023  润新知