精华内容
下载资源
问答
  • 设某银行有A、B两个业务窗口,且处理业务的速度不一样,其中A窗口处理速度是B窗口的2倍 —— 即当A窗口每处理完2个顾客时,B窗口处理完1个顾客。给定到达银行的顾客序列,请按业务完成的顺序输出顾客序列。假定不...

    问题:
    设某银行有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

    思路:
    本题主要是队列思路,可用多种方式实现,这里使用c++STL里的queue
    只能访问 queue 容器适配器的第一个和最后一个元素。只能在容器的末尾添加新元素,只能从头部移除元素。

    代码步骤:
    第一步:建立A、B两个queue队列,模拟A、B窗口
    第二步:输入顾客总数
    第三步:循环输入每个客户编号,对奇数编号的放入A队列中,偶数编号放入B队列中
    第四步:输出,输出分三种情况,第一A,B不为空,即A队列输出两个元素,B队列输出1个元素,第二,当A为空B不为空,接下来全部输出B队列,第三,当B为空A不为空,输出A剩下元素,当A,B都为空,输出结束,输出过程就是不断获取头部元素,删除头部元素过程。

    AC代码:

    #include<iostream>
    #include<queue>
    using namespace std;
    int N;
    queue<int>A;
    queue<int>B;
    void Input() {
    	cin >> N;
    	int M;
    	for (int i = 1; i <= N; i++) {
    		cin >> M;
    		if (M % 2 == 0) {
    			B.push(M);//往队列添加元素
    		}
    		else {
    			A.push(M);
    		}
    	}
    }
    void Printf() {
    	int flag = 0;
    	while (A.empty() != 1 && B.empty() != 1) {//empty是判断容器是否为空,是返回1
    		if (flag == 0) {
    			cout <<A.front();//返回A的第1个元素
    			flag++;
    		}
    		else {
    			cout << " "<<A.front();
    		}
    		A.pop();//删除队列第一个元素
    		if (A.empty() != 1) {
    			cout << " "<<A.front();
    			A.pop();
    		}
    		cout << " " << B.front();
    		B.pop();
    	}
    	while (A.empty() == 1 && B.empty() != 1) {
    		if (flag == 0) {
    			cout <<B.front();
    			flag++;
    		}
    		else {
    			cout << " " << B.front();
    		}
    		B.pop();
    	}
    	while (A.empty() != 1 && B.empty() == 1) {
    		if (flag == 0) {
    			cout <<A.front();
    			flag++;
    		}
    		else {
    			cout << " " << A.front();
    		}
    		A.pop();
    	}
    }
    	int main() {
    		Input();
    		Printf();
    	}
    
    展开全文
  • 3-6 银行业务队列简单模拟 (20分) 设某银行有A、B两个业务窗口,且处理业务的速度不一样,其中A窗口处理速度是B窗口的2倍 —— 即当A窗口每处理完2个顾客时,B窗口处理完1个顾客。给定到达银行的顾客序列,请按业务...

    7-18 银行业务队列简单模拟 (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
    

    原谅我又又又开始唠叨了:

    作为一个没用系统学习过C++的小白,我首先想到的是C语言,然后照着课本一步步的敲出来,细节什么的应该没用什么问题了,但是就是无法答案错误,整个人都不好了,C语言也太开发和灵活了,程序员可以根据自己的需求设计和编写代码,研发很好。
    但是C++就比较友好了(尤其在堆栈和队列方面),STL容器,提高封装好的函数,用户和程序员根本不用考虑你是怎么实现的,对于基础代码差的人(尤其是我)太有帮助了吧,那群破指针,一会脑袋就晕了。。。
    以上仅为个人观点。

    今天那个用C语言写的代码啊,没用改正过来,但是为了我以后纠错方面,也放在下边了,千万不要抄这个,错的!!!

    C++版本:

    #include<iostream>
    #include<queue>
    #include<cstdio>
    #include<algorithm>
    
    using namespace std;
    
    int main() {
    	queue<int> A,B;
    	int N; 
    	int i=0;//用于判断第一个数据,是否有空格
    	cin>>N;
    	if(N<0)
    		return 0;
    	while(N--) {
    		int m;
    		cin>>m;
    		if(m%2==1)
    			A.push(m);
    		else
    			B.push(m);
    	}
    	while(!A.empty()) {
    		int cot=2;
    		while(cot--&&!A.empty()) {
    			if(i++)
    				cout<<" ";
    			cout<<A.front();
    			A.pop();
    		}
    
    		if(!B.empty()) {
    			if(i++)
    				cout<<" ";
    			cout<<B.front();
    			B.pop();
    		}
    	}
    	while(!B.empty()) {
    		if(i++)
    			cout<<" ";
    		cout<<B.front();
    		B.pop();
    	}
    	return 0;
    }
    

    C版本【有误】:

    #include <stdio.h>
    #include <stdlib.h>
    
    typedef struct node {
    	int data;
    	struct node *next;
    }*QueueNode,Node;
    
    typedef struct {
    	QueueNode front,rear;
    } LQueue;//头尾节点
    
    int empty(LQueue *L) {
    	if(L->front==L->rear)
    		return 1;
    	return 0;
    }
    
    QueueNode creatQueue(LQueue *L) {
    	QueueNode Q=(QueueNode)malloc(sizeof(Node));
    	Q->next=NULL;
    	L->front=Q;
    	L->rear=Q;
    	return Q;
    }
    
    void push(int p,LQueue *L) {
    	QueueNode s=(QueueNode)malloc(sizeof(Node));
    	s->data=p;
    	s->next=NULL;
    	L->rear->next=s;
    	L->rear=s;
    }
    
    void pop(LQueue *L) {
    	if(empty(L))
    		return ;
    	QueueNode p;
    	int x;
    	p=L->front->next;
    	L->front->next=p->next;
    	free(p);
    	if(L->front->next==NULL)
    		L->front=L->rear;
    }
    
    int main() {
    	int N;
    	int p;
    	LQueue *LA=(LQueue *)malloc(sizeof(LQueue));
    	LQueue *LB=(LQueue *)malloc(sizeof(LQueue));
    	QueueNode A=creatQueue(LA);
    	QueueNode B=creatQueue(LB);
    	scanf("%d",&N);
    	//判断奇数和偶数进行入队
    	while(N--) {
    		scanf("%d",&p);
    		if(p%2==0)
    			push(p,LB);
    		else
    			push(p,LA);
    	}
    	//按照顺序出队
    	int cnt=0;
    	while(!empty(LA)) {
    		int x=2;
    		while(!empty(LA)&&x--) {
    			if(cnt++)
    				printf(" ");
    			printf("%d",LA->front->data);
    			pop(LA);
    		}
    		if(!empty(LB)) {
    			if(cnt++)
    				printf(" ");
    			printf("%d",LB->front->data);
    			pop(LB);
    		}
    	}
    	while(!empty(LB)) {
    		if(cnt++)
    			printf(" ");
    		printf("%d",LB->front->data);
    		pop(LB);
    	}
    	return 0;
    }
    
    展开全文
  • 银行业务队列简单模拟(c语言)

    千次阅读 2021-04-04 21:56:56
    银行业务队列简单模拟题目答案 题目 答案 #include<stdio.h> int main() { int n; scanf("%d",&n); int a[n],b[n],i,j=0,k=0,tmp; for(i=0;i<n;i++) { scanf("%d",&tmp); if(tmp%2==1) a...

    银行业务队列简单模拟

    题目

    在这里插入图片描述

    答案

    #include<stdio.h>
    int main()
    {
    	int n;
    	scanf("%d",&n);
    	int a[n],b[n],i,j=0,k=0,tmp;
    	for(i=0;i<n;i++)
    	{
    		scanf("%d",&tmp);
    		if(tmp%2==1) a[j++]=tmp;
    		else b[k++]=tmp;
    	}
    	int count=0,t=0,flag=0;
    	for(i=0;i<j;i++)
    	{
    		count++;
    		if(flag==0)
    		{
    			printf("%d",a[i]);flag=1;
    		}
    		else printf(" %d",a[i]);
    		if(count%2==0&&t<k)
    		{
    			if(flag==0)
    			{
    				printf("%d",b[t++]);flag=1;
    			}
    			else printf(" %d",b[t++]);
    		}
    	}
    	while(t<k)
    	{
    		if(flag==0)
    			{
    				printf("%d",b[t++]);flag=1;
    			}
    			else printf(" %d",b[t++]);
    	}
    }
    
    展开全文
  • 设某银行有A、B两个业务窗口,且处理业务的速度不一样,其中A窗口处理速度是B窗口的2倍 —— 即当A窗口每处理完2个顾客时,B窗口处理完1个顾客。给定到达银行的顾客序列,请按业务完成的顺序输出顾客序列。假定不...

    设某银行有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 main()
    {
    	queue<int>ji,ou;
    	int n,m,flag=1,flag1=1;
    	cin>>n; 
    	for(int i=0;i<n;i++)
    	{
    		cin>>m;
    		if(m%2!=0)
    		ji.push(m);
    		else
    		ou.push(m);
    	}
    	int maxn=max(ji.size(),ou.size());
    	for(int i=0;i<maxn;i++)
    	{
    		if(!ji.empty())
    		{	
    			if(ji.size()==1&&flag1==0)
    			{
    				cout<<ji.front();
    				ji.pop();
    			}
    			else
    			{
    				cout<<ji.front()<<" ";
    				ji.pop();
    			}
    		}
    		if(ji.empty())
    		flag=0;
    		if(!ji.empty())
    		{
    			if(ji.size()==1&&flag1==0)
    			{
    				cout<<ji.front();
    				ji.pop();
    			}
    			else
    			{
    				cout<<ji.front()<<" ";
    				ji.pop();
    			}
    		}
    		if(ji.empty())
    		flag=0;
    		if(!ou.empty())
    		{	
    			if(ou.size()==1&&flag==0)
    			{
    				cout<<ou.front();
    				ou.pop();
    			}
    			else
    			{
    				cout<<ou.front()<<" ";
    				ou.pop();
    			}
    			
    		}
    		if(ou.empty())
    		flag1=0;
    	}
    	return 0;
    } 
    
    展开全文
  • 案例3-1.9 银行业务队列简单模拟 设某银行有A、B两个业务窗口,且处理业务的速度不一样,其中A窗口处理速度是B窗口的2倍 —— 即当A窗口每处理完2个顾客时,B窗口处理完1个顾客。给定到达银行的顾客序列,请按业务...
  • 设某银行有A、B两个业务窗口,且处理业务的速度不一样,其中A窗口处理速度是B窗口的2倍 —— 即当A窗口每处理完2个顾客时,B窗口处理完1个顾客。给定到达银行的顾客序列,请按业务完成的顺序输出顾客序列。假定不...
  • 3-6 银行业务队列简单模拟 (20分) 设某银行有A、B两个业务窗口,且处理业务的速度不一样,其中A窗口处理速度是B窗口的2倍 —— 即当A窗口每处理完2个顾客时,B窗口处理完1个顾客。给定到达银行的顾客序列,请按业务...
  • 3-7-6银行业务队列简单模拟 设某银行有A、B两个业务窗口,且处理业务的速度不一样,其中A窗口处理速度是B窗口的2倍 —— 即当A窗口每处理完2个顾客时,B窗口处理完1个顾客。给定到达银行的顾客序列,请按业务完成的...
  • 很基本的一道队列的应用,因为数据量较少,其实可以直接用顺序队列做,下面我们分别给出链队列和顺序队列两种解法: 链队列: #include <stdio.h> #include <stdlib.h> typedef struct node{ struct ...
  • PTA 7-2 银行业务队列简单模拟 问题描述: 设某银行有A、B两个业务窗口,且处理业务的速度不一样,其中A窗口处理速度是B窗口的2倍 —— 即当A窗口每处理完2个顾客时,B窗口处理完1个顾客。给定到达银行的顾客序列,...
  • 我的数据结构与算法题目集代码仓:https://github.com/617076674/Data-structure-and-algorithm-topic-set ... 题目描述: ...思路:用队列模拟 时间复杂度和空间复杂度均是O(N)。 C++代码: #inclu...
  • 7-1 银行业务队列简单模拟 (25 分) 设某银行有A、B两个业务窗口,且处理业务的速度不一样,其中A窗口处理速度是B窗口的2倍 —— 即当A窗口每处理完2个顾客时,B窗口处理完1个顾客。给定到达银行的顾客序列,请按业务...
  • 银行业务队列简单模拟 (队列)

    千次阅读 2018-10-09 23:06:40
    7-1 银行业务队列简单模拟 (25 分) 设某银行有A、B两个业务窗口,且处理业务的速度不一样,其中A窗口处理速度是B窗口的2倍 —— 即当A窗口每处理完2个顾客时,B窗口处理完1个顾客。给定到达银行的顾客序列,请...
  • 7-18 银行业务队列简单模拟 (25 分)(Python版) 问题描述 设某银行有A、B两个业务窗口,且处理业务的速度不一样,其中A窗口处理速度是B窗口的2倍 —— 即当A窗口每处理完2个顾客时,B窗口处理完1个顾客。给定到达银行...
  • 设某银行有A、B两个业务窗口,且处理业务的速度不一样,其中A窗口处理速度是B窗口的2倍 —— 即当A窗口每处理完2个顾客时,B窗口处理完1个顾客。给定到达银行的顾客序列,请按业务完成的顺序输出顾客序列。假定不...
  • num = input() num_list = num.split(" ") for i in range(0, len(num_list)): num_list[i] = int(num_list[i]) List, List1, List2 = [], [], [] Range = num_list.pop(0) j = 0 for i in num_list: ...
  • 7-1 银行业务队列简单模拟 设某银行有A、B两个业务窗口,且处理业务的速度不一样,其中A窗口处理速度是B窗口的2倍 —— 即当A窗口每处理完2个顾客时,B窗口处理完1个顾客。给定到达银行的顾客序列,请按业务完成的...
  • 7-2 银行业务队列简单模拟 (25 分) 设某银行有A、B两个业务窗口,且处理业务的速度不一样,其中A窗口处理速度是B窗口的2倍 —— 即当A窗口每处理完2个顾客时,B窗口处理完1个顾客。给定到达银行的顾客序列,请按...
  • PTA 银行业务队列简单模拟

    千次阅读 2018-06-13 00:10:26
    银行业务队列简单模拟 设某银行有A、B两个业务窗口,且处理业务的速度不一样,其中A窗口处理速度是B窗口的2倍 —— 即当A窗口每处理完2个顾客时,B窗口处理完1个顾客。给定到达银行的顾客序列,请按业务完成的顺序...
  • 银行业务队列简单模拟 PTA

    千次阅读 2018-10-19 11:55:27
    #include #include &lt;stdio.h&gt; #define MAXSIZE 1000 #define OVERFLOW -2 ...//银行业务队列简单模拟 using namespace std; typedef struct Queue { int * base; int front;//整数类型表示位置 int ...
  • } //思路:创建两个队列作为A窗口和B窗口,奇数去A,偶数去B,当A输出两个元素时,B输出一个元素 //注意:当一个队列为空而另一个队列还有元素时,直接将其全部输出 int main() { SqQueue A;//创建奇队列 SqQueue ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,497
精华内容 2,598
关键字:

银行业务队列简单模拟