2012-03-11 58 views
1

給定總金額1.15 Rs.(1盧比= 100派斯),因此共計115個派生,並給出8 coins的列表,並命名爲{1, 2, 5, 10, 20, 25, 50, 100}派生。找到總和爲1.15 Rs的6 coins。限制條件是我應該不能從我的解決方案中給出限制集中給出的數量。這裏的限制集是{5, 10, 20, 25}找到與限制集合中的目標金額相加的硬幣

欣賞任何解決方案或指針。

+0

你是什麼意思的限制集?這是否意味着你必須強制使用這個受限制的硬幣? – NinjaCoder 2012-03-11 15:34:16

+0

您是否想要針對一般情況或此特定情況的解決方案或指針? – Appleman1234 2012-03-11 19:40:07

+0

你的問題措辭的方式,你意味着你不能在限制集中使用任何硬幣。那麼你怎麼能用剩下的一套{1,2,50,100}'在6個硬幣中得到115? {100,2,2,2,2,2 .. 6個硬幣已經},沒有解決方案。我認爲你的意思是說你不能在這個子集之外使用任何硬幣,在這種情況下,不需要知道整個8個硬幣,因爲我們只有一個集合認爲這也有一個可解的答案'{25, 25,25,25,10,5}'在6個硬幣中。 – Seph 2012-03-13 05:27:22

回答

1

這是你在找什麼?

import java.util.Arrays; 
public class Coining { 

public static void getChange(int amount, int[] denomination){ 
    Arrays.sort(denomination);//sort the array 
    for(int coin=denomination.length-1; coin>=0;coin--){ 
     int coef = amount/denomination[coin]; 
     amount%=denomination[coin]; 
     if(coef > 0) 
      System.out.format("%d {%d Paise}%n",coef, denomination[coin]); 
     if(amount == 0) 
      return; 
    } 
}// 

public static void main(String... args){ 
    //int coins[]={1,2,5,10,20,25,50,100}; THIS IS IRRELEVANT. 
    int restricted[]={5,10,20,25}; 
    int amount = 115; 
    getChange(amount,restricted); 
}// 
}