타이틀 셋트의 데이터 구조와 알고리즘 (중국어) 7-18 뱅킹 간단한 시뮬레이션 큐 (25 분)

1. 주제

각 창 A를 프로세스 고객 (2)의 완료를, B는 윈도우 (1)를 처리 할 때, 즉 - 뱅크 A를 제공한다, B 개의 창구 서비스 처리 속도는 윈도우의 윈도우 B의 2 배의 처리 속도이고, 동일하지 고객. 고객 은행의 순서 감안할 때, 출력 시퀀스의 기업 고객에 의해 주문을 완료하시기 바랍니다. 어떤 고객이 없다고 가정하면 간격이 도착하는 시간을 고려해야하고, 다른 창은 동시에 두 개의 고객, 고객 우선 순위 출력 창을 처리 할 때.

입력 형식 :

라인 입력은 제 번호 N (≤1000) 고객의 총 개수는 N 비트 고객의 수에 따라, 상기 양의 정수이다. 홀수 비즈니스를 수행하기 위해 창 A는 고객의 요구를 번호, 고객의 짝수 B 창에 갔다. 숫자 사이에 공백으로 구분.

출력 형식 :

고객 번호의 보도 거래 완료 시퀀스 출력. 숫자 사이에 공백으로 구분하지만, 마지막 숫자 후 여분의 공간을 가질 수 없습니다.

샘플 입력 :

8 2 1 3 9 4 11 13 15

샘플 출력 :

1 3 2 9 11 4 13 15

2. 주제 분석

(가)에도 B의 출력을 선택하여 출력에 대응, 창 B는 A, B의 홀수로 두 개의 큐를 선언 할 때 최종적 후 남은 두 속성의 나머지를 계속 두 출력 A, 그것

3. 코드

#include<iostream>
#include<queue>
using namespace std;
int main()
{
	int amount;
	cin >> amount;
	queue<int>a;
	queue<int>b;
	for (int i = 0; i < amount; i++)
	{
		int temp;
		cin >> temp;
		if (temp % 2 == 0)
			b.push(temp);
		else
			a.push(temp);
	}

	int count = 0;//控制空格的输出
	while (!a.empty() && !b.empty())
	{
		for (int i = 0; i < 2&&!a.empty(); i++)
		{
			if (count == 0)
			{
				cout << a.front();
				a.pop();
				count++;
			}
			else
			{
				cout << " " << a.front();
				a.pop();
			}
		}
	
		if (count == 0)
		{
			cout << b.front();
			b.pop();
			count++;
		}
		else
		{
			cout << " " << b.front();
			b.pop();
		}

	}
	while (!a.empty())
	{
		if (count == 0)
		{
			cout << a.front();
			a.pop();
			count++;
		}
		else
		{
			cout << " " << a.front();
			a.pop();
		}
	}
	while (!b.empty())
	{
		if (count == 0)
		{
			cout << b.front();
			b.pop();
			count++;
			}
		else {
			cout << " " << b.front();
			b.pop();
		}
	}


}

 

게시 31 개 원래 기사 · 원 찬양 한 · 전망 (191)

추천

출처blog.csdn.net/qq_42325947/article/details/104216390