網易有道程式設計題 恢復佇列

2021-07-16 20:41:02 字數 1409 閱讀 2722

題目詳情:給出乙個含有n個元素的佇列,其內容為1到n的無序整數,按照給定演算法輸出該佇列,使得該佇列依次輸出1,2,3,…,n-1,n。

給定演算法為:

void outque(queue

q)

}

即每次將隊首元素放到隊尾,同時讀取當前隊首,並彈出丟棄。

現在要求輸入t組整數,每乙個整數n,輸出對應的n的原本佇列。如:

輸入:

2 3 10

輸出:

2 1 3

8 1 6 2 10 3 7 4 9 5

觀察之後,發現其排列為每次空乙個空格之後,插入。如n = 10時:

0102030405

0 162 0 374 0 5

81 6 2 0 3 7 495

8 1 6 2103 7 4 9 5

**如下:

#include 

#include

using

namespace

std;

int main()

j = (j == n-1 ? n : (j+1)%n);

}else

if (res[j] == 0 && zero == 1)

else}}

else

j = (j == n-1 ? n : (j+1)%n);

}else

if (res[j] == 0 && zero == 1)

else}}

}}

for (int i = 1; i cout

<< res[i] << ' ';

}cout

0;}

今天總共三道程式設計題,估計都不難,我就做了這麼一道,還沒ac,丟人!

細節:

細節一:迴圈佇列處理,j = (j == n-1 ? n : (j+1)%n);,不能單純地j = (j+1)%n;,因為如果剛好處理到n位,則迴圈進入到0,而題目沒有將0考慮在內。

細節二:如果按照n的奇偶性分別處理,那麼在進入第二輪的時候的起點位置不一樣。其實應該大可不必,懶得改了。

算了,弱渣就這樣吧。

估計這不是好的演算法思路,只是將答案解出來了。

畢業和工作,前途堪憂。

網易有道2017內推程式設計題 構造佇列 模擬

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

網易有道2017內推程式設計題 佇列操作 對映

網易有道2017內推程式設計題 描述 小明同學把1到n這n個數字按照一定的順序放入了乙個佇列q中。現在他對佇列q執行了如下程式 while q.empty 佇列不空,執行迴圈 做取出隊頭的值操作的時候,並不彈出當前隊頭。小明同學發現,這段程式恰好按順序輸出了1,2,3,n。現在小明想讓你構造出原始的...

網易有道演算法題

題目 給16個數字,1 16,每個數字都有乙個出現的概率。然後隨機選中乙個數字,讓你猜是選中的是哪個數字。猜的方法是,你可以給定乙個數字的集合,對方告訴你選中的數在不在你給的集合裡。求最差情況下最好的演算法,還有期望最小的演算法。這道題可以用赫夫曼編碼做,根據數字出現的概率,進行編碼。然後猜的時候,...