PAT真题(C语言)——1014:Waiting in Line

本文介绍了PAT考试中一道关于排队问题的C语言编程题,重点在于解决黄线满前后的客人分配策略。对于前者,选择人最少的列;对于后者,判断各列倒数第M个人的结束服务时间来决定分配。虽然代码实现较为复杂,但通过思路解析有助于理解算法逻辑。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入图片描述
这道题我找到了解决的方法,可是不得不说,写出来的代码真的是丑陋无比,各种数组嵌套嵌套,很容易就把自己套晕了,果然不能乱套娃……
直接说一下解决思路吧。
客人分两种:黄线满之前来的和黄线满之后来的。
对于黄线满之前来的,只需要判断哪一列人最少就直接把他放到那一列就行了。
对于黄线满之后的,我想到了一个方法:假如每一列黄线内最多排M个人,那么只要去判断每一列的倒数第M个人谁先服务完就分配他到哪一列。要实现这个目标,就需要统计每一列每个人的服务结束时间,再按这个方法判断即可。
直接上代码吧,我估计大家看了也恶心,但是我还是要恬不知耻的放上来

#include <stdio.h>
#include <stdlib.h>

int out[20];

int ptime(int t)
{
   
	int m, s;
    if(t==999999)
    {
   
        printf("Sorry\n");
        return 0;
    }
	m = t / 60;
	s = t % 60;
	printf("%02d:%02d\n", m + 8, s);
	return 0;
}

int main()
{
   
	int window[20][1001] = {
    0 };//每一行第一个元素保存当前行人数(小于最大人数)
	int wait[1000] = {
    0 };
	int check[1000] = {
    0 };
    int time[1000];
	int full = 0;
	
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值