2014-04-20 78 views
-1

我需要在java中開發一個程序,我需要計算給定項目的最低帳單。根據交易計算最低帳單金額的算法

每個項目的標準價格如下: Onion- Rs.5 Tomato- Rs.10 馬鈴薯 - 一筆2盧比

還有一個列表與項目不同的交易。一個項目可以有多個交易。

2洋蔥 - Rs.7.5
3洋蔥 - Rs.10

3番茄 - Rs.25
5番茄 - Rs.45

3馬鈴薯 - Rs.5
4馬鈴薯 - 盧比。 6.5

它可以有更多。 因此,該方法需要以任何給定數量(考慮給定交易)的方式計算賬單金額,它應該給出最小的賬單金額。

輸入將在下面的格式,以支付該計劃應該計算的最低金額: -

洋蔥,西紅柿,洋蔥,土豆,西紅柿,洋蔥,洋蔥

(4)onion -> (10+5) 
(2)tomato -> (10*2) 
(1)potato -> 2 
------------------ 
minimum bill -> 37 

我有兩個班,一個名爲蔬菜&其他命名新政如下

public class Deal { 

    private String code; 
    private String quantity; 
    private String price; 

    //getters & setters   
} 



public class Vegetable{ 

private String code; 
private String name; 
private String price; 

//getters & setters 
} 
+0

你的問題到底是什麼?或者你只是想找人幫你做作業? –

回答

0

事實上,這是knapsack problem。只需將總數看作揹包的數量,再將1除以每件商品的價格即可。

實施例:

(4)洋蔥 - > W = 4個
項目:
2洋蔥 - Rs.7.5 - > W = 2,值= 1/7.5
3洋蔥 - Rs.10 - > w = 3,value = 1/10

注意:分別爲每個項目解決此問題。

順便說一句,在互聯網上有很多可用的源代碼,如this,不過我建議你先試試自己。

0

我不會做這件事你,但,這是該算法能夠樣子:

public int getPrice(int code) 
{ 
    int price = getVegetableBasePrice(code); 
    Iterator<Deal> it = deals.iterator(); 
    while(it.hasNext()) 
    { 
     Deal next = it.next(); 
     if(next.getCode() == code) 
     { 
      price = Math.min(price, deal.getPrice()); 
     } 
    } 

    return price; 
} 

這將是更好的計算全部項目的價格在有一次,因爲這會導致多項式時間複雜度,當你可以用線性時間實現這一點。這取決於你需要算法的好處。