7-5 银行业务队列简单模拟(一个错误的思路。。。

    科技2022-07-11  85

    7-5 银行业务队列简单模拟 (25分) 设某银行有A、B两个业务窗口,且处理业务的速度不一样,其中A窗口处理速度是B窗口的2倍 —— 即当A窗口每处理完2个顾客时,B窗口处理完1个顾客。给定到达银行的顾客序列,请按业务完成的顺序输出顾客序列。假定不考虑顾客先后到达的时间间隔,并且当不同窗口同时处理完2个顾客时,A窗口顾客优先输出。

    输入格式: 输入为一行正整数,其中第1个数字N(≤1000)为顾客总数,后面跟着N位顾客的编号。编号为奇数的顾客需要到A窗口办理业务,为偶数的顾客则去B窗口。数字间以空格分隔。

    输出格式: 按业务处理完成的顺序输出顾客的编号。数字间以空格分隔,但最后一个编号后不能有多余的空格。

    输入样例: 8 2 1 3 9 4 11 13 15 输出样例: 1 3 2 9 11 4 13 15

    #include<bits/stdc++.h> using namespace std; int i; int flag=0; //输出倒数x个 void shuchushuzu(int cun[],int x){ for (int j = 0; j < x; j++) { if (cun[i - x + j] % 2 == 0) { if (flag == 0) { cout << cun[i - x + j]; flag = 1; } else { cout << " " << cun[i - x + j]; } } } } int main(){ int cun[1009]; int cunb; int a=0; cin>>i; for(int j=0;j<i;j++){ cin>>cun[j]; if(cun[j]%2==0){ a+=2; cunb=cun[j]; if(a==0){ if(flag==0){ cout<<cunb; flag=1; } else{ cout<<" "<<cunb; } } } if(cun[j]%2!=0){ a--; if(a==0){ if(flag==0){ cout<<cun[j]<<" "<<cunb; flag=1; } else{ cout<<" "<<cun[j]<<" "<<cunb; } } if(a!=0){ if(flag==0){ cout<<cun[j]; flag=1; } else{ cout<<" "<<cun[j]; } } } } if(a>0&&a%2==0){ shuchushuzu(cun,a/2); } if(a>0&&a%2!=0){ shuchushuzu(cun,(a+3)/2); } /* if(a<0){ shuchushuzu(cun,-a/2); } */ }

    最后一个测试点错了,而且很难理清逻辑,不应该顺序处理的,应该先存到两个容器里面

    Processed: 0.013, SQL: 8