这是一个模拟银行排队系统的 C++ 代码。代码中,'A_arrive_time' 表示 A 客户到达的时间,'B_arrive_time' 表示 B 客户到达的时间,'A_set_time' 表示 A 客户完成业务离开的时间,'B_set_time' 表示 B 客户完成业务离开的时间。'a'、'b'、'Line_A'、'Line_B' 分别表示 A、B 两个窗口的状态和 A、B 两个队列中的人数。

以下是对每个函数的详细解释:

  1. 'A_set()': 表示 A 窗口完成一次业务,将 'Line_A' 减 1,'a' 加 1。

  2. 'B_set()': 表示 B 窗口完成一次业务,将 'Line_B' 减 1,'b' 加 1。

  3. 'A_arrive()': 表示 A 客户到达,如果 B 队列中有人,则将 'Line_B' 减 1,'a' 加 1。

  4. 'B_arrive()': 表示 B 客户到达,如果 A 队列中有人,则将 'Line_A' 减 1,'b' 加 1。

  5. 'A_prepare_time()': 将 A 客户到达时间进行处理,加上 140 分钟(表示银行开门时间),如果分钟数大于等于 60,则小时数加 1,分钟数减去 60。

  6. 'B_prepare_time()': 将 B 客户到达时间进行处理,加上 140 分钟,处理方式与 'A_prepare_time()' 相同。

  7. 'main()' 函数:按照时间顺序模拟整个银行的运营过程,对每个时间点进行判断,如果有客户到达则加入相应的队列,如果有窗口空闲则进行业务操作。最后输出所有客户和队列中的人数之和。

#include<bits/stdc++.h>
using namespace std;
int A_arrive_time[15]={1830,2200,120,210,440,700,1000,1200,1430,1630},
B_arrive_time[15]={350,720,930,1230,1450,1800,2230,50},
A_set_time[15]={1820,2120,2330,330,520,830,1230,1550},
B_set_time[15]={900,1200,1420,1600,1840,2130,30,330,500,700};
int a=0,b=0,Line_A=0,Line_B=0;

void A_set()
{
if(!a) a++;
Line_A++; 
a--;
return;
}

void B_set()
{
if(!b) b++;
Line_B++;
b--;
return; 
}

void A_arrive()
{
if(Line_B)
{
Line_B--;
a++;
}
return;
}

void B_arrive()
{
if(Line_A)
{
Line_A--;
b++;
}
return;
}

void A_prepare_time()
{
for(int m=0;m<10;m++)
   {
   int x,y;
   x=(A_arrive_time[m]+140)/100;
   y=(A_arrive_time[m]+140)%100;
   if(y>=60)
     {
	 	y-=60;
	 	x++;
	 }
   A_arrive_time[m]=x*100+y;
   }
return;
}

void B_prepare_time()
{
for(int m=0;m<8;m++)
   {
   int x,y;
   x=(B_arrive_time[m]+140)/100;
   y=(B_arrive_time[m]+140)%100;
   if(y>=60)
     {
	 	y-=60;
	 	x++;
	 }
   B_arrive_time[m]=x*100+y;
   }
return;
}


int main()
{
A_prepare_time();
B_prepare_time(); 
for(int i=0;i<=23;i++)
   for(int j=0;j<=50;j=j+10)
      {
      int t=i*100+j;
      for(int m=0;m<10;m++) if(A_arrive_time[m]==t) A_arrive();
      for(int m=0;m<8;m++) if(B_arrive_time[m]==t) B_arrive();
      for(int m=0;m<8;m++) if(A_set_time[m]==t) A_set();
      for(int m=0;m<10;m++) if(B_set_time[m]==t) B_set();
      }
cout<<a+b+Line_A+Line_B;
return 0; 
}
C++ 代码解析:模拟银行排队系统

原文地址: https://www.cveoy.top/t/topic/mHfA 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录