小明同學把1到n這n個數字按照一定的順序放入了乙個佇列q中。現在他對佇列q執行了如下程式:
while(!q.empty()) //佇列不空,執行迴圈做取出隊頭的值操作的時候,並不彈出當前隊頭。
小明同學發現,這段程式恰好按順序輸出了1,2,3,...,n。現在小明想讓你構造出原始的佇列,你能做到嗎?[注:原題樣例第三行5有錯,應該為3,以下已修正]
輸入描述:
第一行乙個整數t(t ≤ 100)表示資料組數,每組資料輸入乙個數n(1 ≤ n ≤ 100000),輸入的所有n之和不超過200000。
輸出描述:
對於每組資料,輸出一行,表示原始的佇列。數字之間用乙個空格隔開,不要在行末輸出多餘的空格.
輸入例子:
412310
輸出例子:
12 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...