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

2022-06-04 01:00:09 字數 1420 閱讀 7500

題目描述:

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

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

int x = q.front(); //取出當前隊頭的值x

q.pop(); //彈出當前隊頭

q.push(x); //把x放入隊尾

x = q.front(); //取出這時候隊頭的值

printf("%d\n", x); //輸出x

q.pop(); //彈出這時候的隊頭

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

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

輸入描述:

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

輸出描述 :

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

輸入例子1 :41

2310輸出例子1 :

12 1

2 1 3

8 1 6 2 10 3 7 4 9 5

解題思路:

方案一:

按照取出資料規則,每存乙個資料,跳過乙個空位置,在下乙個空位置放置

方案二:

對比小明取出規則,反正存資料

**實現:

1 #include 2 #include 3 #include 4

using

namespace

std;56

7int

main()

8 while (v[ptr] != 0);

27//

do28

// while (v[ptr] != 0);

33//

v[ptr] = m;

34//}35

//賦值方法二

36 dequev;

37for (int i = n; i > 0; --i)

3844

4546

for(auto a : v)

47 cout << a << '';

48 cout <5051

return0;

52 }

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

小明同學把1到n這n個數字按照一定的順序放入了乙個佇列q中。現在他對佇列q執行了如下程式 while q.empty 佇列不空,執行迴圈 做取出隊頭的值操作的時候,並不彈出當前隊頭。小明同學發現,這段程式恰好按順序輸出了1,2,3,n。現在小明想讓你構造出原始的佇列,你能做到嗎?注 原題樣例第三行5...

網易有道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...