2016-10-27 30 views
-1

我想弄清楚我想解決這個問題的方法。問題是我們正在投票建立一家公司的新設施,公司政策規定,獲勝設施必須獲得超過一半的建造投票數,即讓n爲 總數投票,如果n = 20,我們必須獲得至少11票才能獲勝;如果n = 21,我們也需要11票才能贏。分而治之算法來解決真實生活中的情況

我的工作是找出哪些設施是所有選票的獲勝者,或者決定不建造新設施。

該算法的輸入是所有設施的列表「投票」,其中每個元素是設施對象。該列表可能看起來像下面這樣:

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

我們的算法應返回一個對象設施是誰投票的贏家還是返回None若無其事的多數票。 請注意,我們無法對投票清單進行排序,因爲沒有定義設施 之間的比較操作的輸出,如「浴室<健身房」。但是,我們可以測試候選對象之間的相等性,因爲 平等測試「浴室==浴室」的輸出是明確的

我只是想弄清楚這個算法的僞代碼,該算法怎麼樣代表遞歸使用分治技術任何幫助很好,值得讚賞謝謝。

+0

歡迎來到StackOverflow。請閱讀並遵守幫助文檔中的發佈準則。 [在主題](http://stackoverflow.com/help/on-topic)和[如何提問](http://stackoverflow.com/help/how-to-ask)適用於此處。 StackOverflow不是一個編碼或教程服務。 – Prune

+0

你爲什麼認爲這需要遞歸? – pjs

回答

0

用Python解決;建立一個計數器字典從。提取最受歡迎的選項及其投票計數,其數量爲max。如果vote_count> len(votes)/ 2.0,則返回選項 - 否則返回None。

我不明白這是一個分而治之算法。即使你必須自己構建櫃檯,這也是一個直接的迭代問題。