2013-01-16 46 views
-1

我有一個隊列循環(n隊列數),我想搜索所有隊列大小並找到最小大小隊列。在隊列循環中找到最少

我只是想一個邏輯的

std::queue<int> q; 
/* fill queue ... */ 
int min_value = INT_MAX; 
std::size_t size = q.size(); 
for(q=2; q=n; q++){ // from the second queue to the end queue 
if 
min_value=min.size() > q.size()? 
q.size()=min_value 

這是邏輯正確的,我不知道這件事,有人可以請幫助我!

編輯:我試圖找出

std::queue<int> q; 
    /* fill queue ... */ 
    int min_value = INT_MAX; 
    std::size_t size = q.size(); 
    for(q=0; q<n; q++){ // given loop of queues 
    if 
    (q.size()<min_value) // q.size() is compared with the min_value (limits MAX) 
    min_value=q.size(); // any value of my q.size() which is less than INT_MAX will initially be declared the minimum value. On subsequent iterations this value is refined -- if a smaller value is found that's used for future iterations. at the end of loop, i will get the least value. 

是這個邏輯是否正確?

+4

由於存在很多語法錯誤,所以很難說您的邏輯是否正確。請張貼至少編譯的內容。 – interjay

+0

哦是的,但你可以說絕對的邏輯如何比較每個隊列的大小,並獲得最低限度,然後我可以鍛鍊與語法 – user1983117

+0

@interjay http://architects.dzone.com/articles/algorithm-week-minimum - 這個邏輯的結果是 – user1983117

回答

2

你有幾個錯誤:在大多數語言

  1. 陣列包括c++是零索引,以便大概週期應該是:

    for(q=0; q<n; q++){ 
    

    注意:你的病情q=n是完全沒有意義的,將導致無限循環。

  2. 在循環使用min_value不是min.size這沒有意義。

  3. 在循環中和之前它通過索引訪問隊列。我建議你保持隊列中的向量,所以這將是:

    std::vector<std::queue<int> > q; 
    

    你使用q[i].size()訪問指定的隊列的大小。

+0

沒關係,我可以將隊列初始化爲0並開始循環,因爲你說的使用帶有向量的隊列將是一個好主意,但是我需要邏輯如何比較每個隊列大小和將其存儲在min_value中。你對這個邏輯有任何想法嗎? – user1983117

+0

就像你在代碼中顯示的一樣:'std :: queue'有一個'size()'方法來利用它。 –

+0

會像這樣的比較,http://architects.dzone.com/articles/algorithm-week-minimum-和每個尺寸,給出最小尺寸? – user1983117