2016-06-20 3 views
-2

に私のプログラミングアルゴリズムの試験紙は、この質問があった:は、プログラミング

我々は0さんと1年代を含むキューを持っています。同じ量の01がある場合、キューは均衡していると見なされます。キューが均衡している場合は0を返す関数を作成し、それがなければ01の差を返します。

プログラミング言語に制限はありません。これは単なる基本的なアルゴリズムなので、したがって、最後に挿入された番号を返すisQueueEmpty(F)またはvalueQueue(F)の関数、または最初に挿入された要素を取り出したdeQueue(F)などの関数を使用できます。

私が理解していないことは、これをどうやって行うかです。数字を1つずつ取り出して評価する必要がありますか?事前に感謝

+0

キューのデータ構造を変更して、キューに存在する0と1の数を含めます。その後、あなたの方法は簡単になります。 – btilly

+0

@btilly申し訳ありませんが、私はあなたがそれによって何を意味するのかよく分かりません。説明していただけますか? –

+0

'valueQueue'はキューの先頭の値を返しますか? –

答えて

2

はキューにバランス(1と0との差)を追跡し、ラッパークラスを書く:

class BalanceQueue { 
    private Queue q; 
    private int balance; 

    public BalanceQueue() { 
     q = new Queue(); 
     balance = 0; 
    } 

    public void enqueue(int i) { 
     if (i == 0) balance--; else balance++; 
     q.enqueue(i); 
    }   

    public int dequeue() { 
     int i = q.dequeue(); 
     if (i == 1) balance--; else balance++; 
     return i; 
    }   

    public int getBalance() { return balance; } 
} 

これはQueueはの実装であると想定されているJavaのような擬似コードであります整数要素を持つキューもちろん、キューに1と0だけが挿入されているかどうかを確認する必要があります。

+0

ありがとうございました!私はあなたの論理を理解しましたが、今は問題をどう扱うかを知っています!ありがとうございました! –

関連する問題