佇列之應用

2021-08-20 07:03:44 字數 1640 閱讀 8835

description

某部隊進行新兵佇列訓練,將新兵從一開始按順序依次編號,並排成一行橫隊,訓練的規則如下:從頭開始一至二報數,凡報到二的出列,剩下的向小序號方向靠攏,再從頭開始進行一至三報數,凡報到三的出列,剩下的向小序號方向靠攏,繼續從頭開始進行一至二報數。。。,以後從頭開始輪流進行一至二報數、一至三報數直到剩下的人數不超過三人為止。

input

本題有多個測試資料組,第一行為組數n,接著為n行新兵人數,新兵人數不超過5000。

output

共有n行,分別對應輸入的新兵人數,每行輸出剩下的新兵最初的編號,編號之間有乙個空格。

sample input

2 20 40

sample output

1 7 19 1 19 37

方法一:

#include#includeusing namespace std;

void output(queueq);

void delete(queue&q)

while (q.size()>3)

q.pop();//報2的出列

flag = true;

}} if (count % 2 == 0)

q.push(i);//把報1的插到隊尾

q.pop();

int j = q.front();

//cout << j << endl;

if (q.front() == 1 && flag == true)

q.push(j);//報2的插到隊尾

q.pop();

if (q.front() == 1 && flag == true)

q.pop();//報3的出列

flag = true;

}} //output(q);

//cout << endl;

count++; }}

void output(queueq)

q.pop();

} cout << endl;

}int main()

delete(q);

output(q);

} return 0;

}

方法二:

// cpptest.cpp : 定義控制台應用程式的入口點

#include "stdafx.h"

#include#include#include#includeusing namespace std;

void pop(vectorv)

int main()

int m;

int count = 0;

while (true)

else

for (int i = 1; i < v.size(); i++)

}for (int i = 1; i < v.size(); i++)

}count++;

if (v.size() <= 4)

} for (int i = 1; i < v.size(); i++)

cout << endl;

v.clear();

} return 0;

}

資料結構之佇列應用例項

include stdafx.h include include include include typedef struct qnode qnode typedef struct qutype 顯示時間 void gettime 主頁面顯示 void dispwindow 釋放鏈隊 void de...

Python之棧和佇列的應用

插入操作都是限定在表的尾部 棧和佇列的管理模式是相同的 都可以通過順序結構和鏈式結構實現 棧 stack 只能在表的一端進行插入或刪除操作的限定表,即在表尾進行操作,用於表示式的轉換和求和,函式的遞迴和呼叫 函式入棧和出棧 佇列 queue 只能在表的一端進行插入,在表的另一端進行刪除的線性表,即在...

日誌系統之訊息佇列的應用

kakfa是由linkedin公司開發的乙個分布式的訊息系統,後成為apache頂級開源專案,它使用scala編寫,以可水平擴充套件和高吞吐率的特性而被廣泛使用。網路上很多關於kafka的使用場景描述,有對使用者延遲發簡訊的場景 活動追蹤 流資料處理 日誌處理等各種場景。在這麼多場景中,不一 一枚舉...