zoukankan      html  css  js  c++  java
  • 模拟算法银行平均等候时间,银行平均逗留时间

    //银行客户平均等候时间
    //要算等候时间和算逗留时间是不同的
    //t1[i]表示第i个人的到达时间,t[i]表示第i个人办理时间,t2[i]表示第i个人离开时间,time[i]表示第i个人的等候时间
    //我们要算平均等候时间,其实就是time数组累加求和然后除以n即可
    //对于第1个人,他不需要等待,来到就办理,所以等待时间为0
    //对于第i个人,如果他来到的时候第i-1个人刚刚离开或者已经离开,那么他也不需要等待直接办理,他的情况和第1个人是一样,等待时间为0
    //即time[i]=0;
    //如果第i个人来到,但是第i-1个人还没有离开,那么他就要等待,他的等待时间是(第i-1个人的离开时间-第i个人的到达时间)
    //即time[i]=t2[i-1]-t1[i];
    //而第i个人的离开时间是(第i-1个人的离开时间+第i个人的办理时间)
    //即t2[i]=t2[i-1]+t[i];

    #include <stdio.h>
    #include <string.h>
    #define MAX 110
    int t1[MAX],t[MAX],t2[MAX],time[MAX];
    //t1表示到达时间,t表示办理时间,t2表示离开时间,time表示等候时间
    int n;
    
    int main()
    {
        int i,sum;
        double ave;
    
        scanf("%d",&n);
        for(i=1; i<=n; i++)
        {
            scanf("%d",&t1[i]);
            scanf("%d",&t[i]);
        }
    
        time[1]=0;
        t2[1]=t1[1]+t[1];
    
        for(sum=0,i=2; i<=n; i++)
        {
            if(t1[i] >= t2[i-1])  //如果第i个人的到达时间比第i-1个人的离开时间要晚,那么他不需要等待
            {
                time[i]=0;        //等待时间为0
                t2[i]=t1[i]+t[i]; //他的离开时间就是他的到达时间+办理时间
            }
            else               //第i个人来到的时候第i-1个人还没有离开 
            {
                time[i]=t2[i-1]-t1[i];  //第i个人的等待时间是第i-1个人的离开时间-第i个人的到达时间
                t2[i]=t2[i-1]+t[i];
            }
    
            sum+=time[i];   //对time数组累加求和
        }
    
    //  需要查看最终所有数组的构建情况,把注释去掉就可查看
    //    printf("t1数组: "); for(i=1; i<=n; i++) printf("%d ",t1[i]); printf("\n");
    //    printf("t数组: "); for(i=1; i<=n; i++) printf("%d ",t[i]); printf("\n");
    //    printf("t2数组: "); for(i=1; i<=n; i++) printf("%d ",t2[i]); printf("\n");
    //    printf("time数组: "); for(i=1; i<=n; i++) printf("%d ",time[i]); printf("\n");
        ave=sum*1.0/n;
        printf("%.2lf\n",ave);
    }

    //银行平均等候时间
    //输入中给出每个人的到达时间和办理业务所花的时间
    //算法分析
    //对已第i个人,他的到达银行时间为t1,离开银行时间为t2,那么他在银行的逗留时间是t2-t1
    //tim[i]表示第i个人在银行的逗留时间
    //要算出n个人的平均逗留时间,那么就是对整个time数组进行累加然后除以n即可
    //解决的问题关键是怎么算出一个人在银行的逗留时间
    //特殊的,对于第1个人,他的逗留时间就是他的到达时间+办理业务所花时间
    //对于其他人可能有两种情况
    //1.来到了银行,但是前面的人还没有走,那么他还要等,然后再办理
    //所以他的逗留时间其实是(前一个人的离开时间+自己的办理时间-自己的到达时间)
    //2。来到银行,前面的人刚刚离开(同时离开)或提前离开了,那么这个人不需要等待,直接就去办理
    //所以这种人的逗留时间和第1个人是一样的
    //所以根据上面的分析,我们需要获取的信息有
    //自己的到达时间,办理时间(即输入),前一个人的离开时间

    #include <stdio.h>
    #include <string.h>
    #define MAX 100
    int t1[MAX],t2[MAX],t[MAX],time[MAX];
    //t1[i]表示第i个人到达银行的时间, t2[i]表示第i个人离开银行的时间,
    //t[i]表示第i个人办理的时间, time[i]表示第i个人逗留时间
    int n;
    
    int main()
    {
        int i,sum;
        double ave;
        scanf("%d",&n);  //有n个人
        for(i=1; i<=n; i++)
        {
            scanf("%d",&t1[i]);  //第i个人到达银行的时间
            scanf("%d",&t[i]);  //第i个人办理所需时间
        }
        t2[1]=t1[1]+t[1];  //第1个人的离开时间就是他的到达时间+办理时间
        time[1]=t[1];     //第1个人的逗留时间就是他的办理时间因为他不需要等待
    
        sum=time[1];
        for(i=2; i<=n; i++)
        {
            if(t1[i] >= t2[i-1])  //如果第i个人的到达时间大于或等于第i-1人的离开时间,那么他可以直接办理业务
            {
                t2[i]=t1[i]+t[i];  //他的离开时间就是到达时间+办理时间,情况和第1个人是一样的
                time[i]=t[i];       //逗留时间就是办理时间
            }
            else                //第i个人来到时第i-1个人还没有走
            {
                t2[i]=t2[i-1]+t[i];  //第i个人要在第i-1人离开的时候去办理,所以离开时间是(第i-1个人的离开时间+第i个人的办理时间)
                time[i]=t2[i]-t1[i];  //第i个人的逗留时间就是(自己的离开时间-到达时间)
            }
    
            sum+=time[i];  //把第i个人的逗留时间加上去
        }
    //  需要查看最终所有数组的构建情况,把注释去掉就可查看
    //    printf("t1数组: "); for(i=1; i<=n; i++) printf("%d ",t1[i]); printf("\n");
    //    printf("t数组: "); for(i=1; i<=n; i++) printf("%d ",t[i]); printf("\n");
    //    printf("t2数组: "); for(i=1; i<=n; i++) printf("%d ",t2[i]); printf("\n");
    //    printf("time数组: "); for(i=1; i<=n; i++) printf("%d ",time[i]); printf("\n");
        ave=sum*1.0/n;
        printf("%.2lf\n",ave);
    }
  • 相关阅读:
    Windows之shortcut
    VHDL之code structure
    Embedded之Makefile
    VHDL_LIB之DFF
    VCS之Git
    潭州课堂25班:Ph201805201 django框架 第五课 自定义简单标签,包含标签,模型类创建,梳理类创建 (课堂笔记)
    潭州课堂25班:Ph201805201 django框架 第四课 模板常用标签,模板继承与引用,自定义过渡器 (课堂笔记)
    潭州课堂25班:Ph201805201 django框架 第三课 模板路径,变量,过滤器,静态文件的引用 (课堂笔记)
    潭州课堂25班:Ph201805201 django框架 第二课 url,,include,kwargs,name的使用 (课堂笔记)
    潭州课堂25班:Ph201805201 django框架 第一课 环境搭建 (课堂笔记)
  • 原文地址:https://www.cnblogs.com/scau20110726/p/2722070.html
Copyright © 2011-2022 走看看