• 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;
    }
  • 相关阅读:
    jvm 更多链接
    JVM 内存初学 (堆(heap)、栈(stack)和方法区(method) )
    python 排序
    python 第K个语法符号
    python conf.ini 文件的使用
    python 表示数字
    window 下安装redis
    python redis相关操作
    python 矩阵乘法
    python 查找两个字符串a,b中的最长公共子串
  • 原文地址:https://www.cnblogs.com/zsboy/p/2592412.html
Copyright © 2020-2023  润新知