2014-02-14 18 views
1

我試圖編寫一個函數,該函數需要一些關於數字(貨幣)列表的集合信息,並返回具有這些屬性的具體列表。例如,我會要求一份平均價格爲265.43美元,總金額爲6000美元,最高金額爲1000美元的清單。我將得到一份完整的清單,其價值平均爲265.43美元,總和爲6000美元等。可能有很多滿足屬性的列表,但我不需要枚舉它們,我只需要返回其中的任何一個。從一組集合(總和,平均等)構建一個具體列表

這裏是列表的屬性:

  • 它具有Ñ
  • 的長度這總計爲小號
  • 平均值爲
  • 的最低數目是L
  • The highhe ST數爲ħ
  • 它美元範圍的擊穿相符:
    • X值低於$ 75
    • ý $ 75和$ 200
    • Z之間的值值大於$ 200

我想爲每個參數傳入值,並返回一個匹配它們的列表。我有幾百個這樣的集{N,S,A,L,H,X,Y,Z},但我沒有任何用於生成它們的備份列表。我不需要生成的列表與原始列表完全一樣,我只是需要它們從總體角度看與原始文檔相同。

我想這樣稱呼它 - >名單= gimmeThatList(N,S,A,L,H,X,Y,Z)

我不知道在哪裏,甚至開始尋找有關這方面的信息,所以任何幫助表示讚賞,即使它只是一個鏈接或谷歌搜索術語。一些真實的代碼會很好,如果你可以節省時間,但我會盡我所能。

+0

我認爲這只是找到解決問題的創造性方法。這不是一個標準問題或任何事情。你自己的努力繼續下去呢? –

+0

是的,我只是希望這是一個我不知道的標準問題。我花了很多時間重新發明了車輪,所以不想再犯同樣的錯誤。我自己的努力與你提供的解決方案非常接近,所以我會繼續沿着這條路走下去 – huxley07

回答

0

一些想法:

  • N是多餘的,因爲它是X,Y的總和和Z
  • A是多餘的,因爲它是等於S/N
  • LH可以通過一般化來代替X,Y和Z子集的價格範圍條件。可以假定發生在列表中的那些值,並且解決了降低問題(S' = S - L - H, X', Y', Z')與X,Y和Z相應地適配並用限制性的是,在減少的列表落入範圍內的所有數字[L,R]

對於對於Z'[max(L,200)),對於Y'值[max(75,L),min(H,200)],我們具有範圍[L,min(75,H)]的X'值。 H]

我們可以很容易地計算下限X' * L + Y' * max (75, L) + Z' * max(L, 200)和我們可以創建的可能總和的上限。通過一個簡單的貪婪算法(留給讀者練習,考慮X,Y和Z範圍的個別總和上/下限),我們也可以生成該範圍內的每個和,包括S'

+0

感謝你。我會更加註意貪婪的算法,這似乎是我需要的解決方案。到目前爲止,我的最大問題是平均得到完全正確的結果(總和是沒有問題的),但我只想再想一想,直到解決方案出現爲止。再次感謝 – huxley07

+0

@huxley,正如我所說的,如果你得到了正確的金額,你馬上就能得到平均的權利。我不認爲這些文獻會對你有所幫助,但是有一個非常簡單的策略來獲得理想的總和 –

+0

哇,我很笨,是的,我明白你在說什麼。謝謝。 – huxley07