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