題目描述:
小明同學把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 4using
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...