網易有道2017內推程式設計題2

2021-07-22 01:16:12 字數 1042 閱讀 1670

小明同學把1到n這n個數字按照一定的順序放入了乙個佇列q中。現在他對佇列q執行了如下程式:

while(!q.empty())              //佇列不空,執行迴圈

做取出隊頭的值操作的時候,並不彈出當前隊頭。

小明同學發現,這段程式恰好按順序輸出了1,2,3,...,n。現在小明想讓你構造出原始的佇列,你能做到嗎?[注:原題樣例第三行5有錯,應該為3,以下已修正] 

輸入描述:

第一行乙個整數t(t ≤ 100)表示資料組數,每組資料輸入乙個數n(1 ≤ n ≤ 100000),輸入的所有n之和不超過200000。

輸出描述:

對於每組資料,輸出一行,表示原始的佇列。數字之間用乙個空格隔開,不要在行末輸出多餘的空格.

輸入例子:

412

310

輸出例子:

1

2 12 1 3

8 1 6 2 10 3 7 4 9 5

方法還是暴力法,直接生成順序 然後逆推找回對應的數字。

然後這道題發現了,c++裡直接就有佇列可以用

#include

queueq;

#include#include#includeusing namespace std;

queueq;

int sequence[100001];

void makequene(int num);

void makequene(int num)

int k = 1;

while (!q.empty()) //佇列不空,執行迴圈

//輸出佇列

for (int i = 1; i < num; i++)

printf("%d\n", sequence[num]);

}int main()

return 0;

}

網易有道2017內推程式設計題2

題目描述 小明同學把1到n這n個數字按照一定的順序放入了乙個佇列q中。現在他對佇列q執行了如下程式 while q.empty 佇列不空,執行迴圈 int x q.front 取出當前隊頭的值x q.pop 彈出當前隊頭 q.push x 把x放入隊尾 x q.front 取出這時候隊頭的值 pri...

網易有道2017內推程式設計題

1.洗牌 洗牌在生活中十分常見,現在需要寫乙個程式模擬洗牌的過程。現在需要洗2n張牌,從上到下依次是第1張,第2張,第3張一直到第2n張。首先,我們把這2n張牌分成兩堆,左手拿著第1張到第n張 上半堆 右手拿著第n 1張到第2n張 下半堆 接著就開始洗牌的過程,先放下右手的最後一張牌,再放下左手的最...

網易有道2017內推程式設計題

include include include include include include include include include include include include include include accmulate include include setprecision...