2012-03-11 5 views
1

총 금액이 1.15 Rs. (1 Rs = 100 Paise) 인 경우 합계 115 paise이며 {1, 2, 5, 10, 20, 25, 50, 100} paise와 같은 금액의 8 coins 목록이 주어집니다. 1.15 Rs의 합계 인 6 coins을 찾으십시오. 제한은 내가 은 제한된 세트에 주어진 금액에 대해 내 솔루션에서 변경을해서는 안된다는 것입니다. 여기서 제한된 세트는 {5, 10, 20, 25}입니다.제한된 금액으로 목표 금액을 합한 동전을 찾습니다.

모든 솔루션이나 포인터를 알아보십시오.

+0

제한된 집합이란 무엇을 의미합니까? 이것은 당신이이 제한된 세트에서 동전을 강제적으로 사용해야한다는 것을 의미합니까? – NinjaCoder

+0

일반 사례 또는이 사례에 대한 해결책이나 지침을 원했습니까? – Appleman1234

+0

귀하의 질문에 대한 대답은 제한된 세트에서 동전을 사용할 수 없다는 것을 의미합니다. 그러면 나머지 세트'{1, 2, 50, 100} '을 사용하여 여섯 동전에서 115를 얻을 수 있습니까? {100,2,2,2,2,2 .. 6 동전은 이미}, 해결책은 없습니다. 당신이 말하고자하는 것은 당신이이 부분 집합 밖에서 동전을 사용할 수 없다는 것입니다.이 경우 8 개의 동전을 필요로하지 않는다는 것을 아는 것은 필요하지 않습니다. 고려해야 할 집합이 하나뿐이므로 해결할 수있는 해결책이 있습니다. {25, 25, 25, 25, 10, 5} 6 동전. – Seph

답변

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); 
}// 
}