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