秒杀774 2022-11-17 08:49 采纳率: 90%
浏览 47
已结题

银行排队问题之单队列多窗口服务。谁会呀。马上就要答辩了

#include<stdio.h>

#include<stdlib.h>

typedef struct node

{

int t, p;

} ST;

ST q[1005];

int main()

{

int l, r, n, k, i;

scanf("%d",&n);

l = r = 0;

for(i = 0; i < n; i++)

{

    scanf("%d %d", &q[r].t, &q[r].p);

    if(q[r].p > 60) q[r].p = 60;

    r++;

}

scanf("%d", &k);

int sumwait = 0, lenwait = 0, wait = 0;

int sum[15] = {0}, winnum[15] = {0};

while(l < r)

{

    int flag = 0, minn = 99999, imin = 0;

    for(i = 0; i < k; i++)

    {

        if(sum[i] <= q[l].t)

       

        {

            sum[i] = q[l].t + q[l].p;

            winnum[i]++;

            flag = 1;

            l++;

            break;

        }

        if(minn > sum[i])

        {

            minn = sum[i];

            imin = i;

        }

    }

    if(!flag)

    {

        wait = minn - q[l].t;

        if(lenwait < wait) lenwait = wait;

        sumwait += wait;

        sum[imin] = minn + q[l].p;

        winnum[imin]++;

        l++;

    }

}

int last = 0;

for(i = 0; i < k; i++)

{

    if(last < sum[i]) last = sum[i];

}

printf("%.1lf %d %d\n", 1.0 * sumwait / n, lenwait, last);

for(i = 0; i < k; i++)

{

    printf("%d", winnum[i]);

    if(i == k - 1) printf("\n");

    else printf(" ");

}

return 0;

}

img

  • 写回答

3条回答 默认 最新

查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 11月25日
  • 已采纳回答 11月17日
  • 修改了问题 11月17日
  • 赞助了问题酬金15元 11月17日
  • 展开全部

悬赏问题

  • ¥15 使用ue5插件narrative时如何切换关卡也保存叙事任务记录
  • ¥20 软件测试决策法疑问求解答
  • ¥15 win11 23H2删除推荐的项目,支持注册表等
  • ¥15 matlab 用yalmip搭建模型,cplex求解,线性化处理的方法
  • ¥15 qt6.6.3 基于百度云的语音识别 不会改
  • ¥15 关于#目标检测#的问题:大概就是类似后台自动检测某下架商品的库存,在他监测到该商品上架并且可以购买的瞬间点击立即购买下单
  • ¥15 神经网络怎么把隐含层变量融合到损失函数中?
  • ¥15 lingo18勾选global solver求解使用的算法
  • ¥15 全部备份安卓app数据包括密码,可以复制到另一手机上运行
  • ¥20 测距传感器数据手册i2c