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

在这里插入图片描述
这道题我找到了解决的方法,可是不得不说,写出来的代码真的是丑陋无比,各种数组嵌套嵌套,很容易就把自己套晕了,果然不能乱套娃……
直接说一下解决思路吧。
客人分两种:黄线满之前来的和黄线满之后来的。
对于黄线满之前来的,只需要判断哪一列人最少就直接把他放到那一列就行了。
对于黄线满之后的,我想到了一个方法:假如每一列黄线内最多排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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值