秒杀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 远程桌面文档内容复制粘贴,格式会变化
  • ¥15 关于#java#的问题:找一份能快速看完mooc视频的代码
  • ¥15 这种微信登录授权 谁可以做啊
  • ¥15 请问我该如何添加自己的数据去运行蚁群算法代码
  • ¥20 用HslCommunication 连接欧姆龙 plc有时会连接失败。报异常为“未知错误”
  • ¥15 网络设备配置与管理这个该怎么弄
  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题