2016-10-27 13 views
-1

私は解決しようとしているこの問題に対するアプローチを見つけようとしています。問題は、一部の会社で新しい施設を建設する投票をしているということです。同社の方針によれば、勝利する施設は建設する投票数の半分以上を取得する必要があります。つまり、nを n = 20の場合は、少なくとも11票を獲得しなければなりません。 n = 21の場合は、勝つために11票も必要です。アルゴリズムを分割して克服して実際の状況を解決する

私の仕事は、どのような施設が優勝者であるかを把握したり、新しい施設が建設されていないと判断したりすることです。

このアルゴリズムの入力は、すべての施設のリスト "票"であり、各要素は施設オブジェクトです。リストには、次のようになります。

votes = [ 
    Bathroom, gym, food court, Bathroom, 
    spa, gym, Bathroom, Bathroom,Bathroom, game room, Bathroom 
] 

当社のアルゴリズムは、投票の勝者である施設オブジェクトを返すか、何も過半数の票を持っていない場合Noneを返す必要があります。 「<ジム」のような施設 の間の比較操作の出力が定義されていないため、投票リストをソートできないことに注意してください。しかし、 の等価性テスト "Bathroom == Bathroom"の出力がよく定義されているので、候補オブジェクト間の等価性をテストできます。

私はこのアルゴリズムの疑似コードを理解しようとしています。再帰的に分裂と征服の技術を使用して任意の助けを感謝していただきありがとうございます。

+0

ようこそStackOverflow。ヘルプドキュメントの投稿ガイドラインを読み、それに従ってください。 [on topic](http://stackoverflow.com/help/on-topic)および[How to Ask](http://stackoverflow.com/help/how-to-ask)をここで適用してください。 StackOverflowは、コーディングまたはチュートリアルサービスではありません。 – Prune

+0

なぜ再帰が必要だと思いますか? – pjs

答えて

0

Solve in Python; カウンタ辞書から辞書を作成します。最も人気のある選択肢とその投票数を最大で抽出します。 vote_count> len(votes)/ 2.0の場合は選択肢を返し、そうでなければNoneを返します。

どこが分裂征服アルゴリズムであるか分かりません。カウンターテーブルを自分で作成しなければならない場合でも、それはストレートな反復問題です。

関連する問題