最少硬币问题
2012-05-03 14:27
218 查看
给定一定面值的硬币 coins{1,3,5,10...n},求组成任意一个总数sum需要的最少硬币数量。
例如,总数为sum,硬币为{1,3,5,7}.
不过下面的代码在硬币为{3,5,7}时不能正常工作。因为本题的解法是,根据前一个状态计算下一个状态。如果coins是{3,5,7},则例如sum=6时无解,那么后面的状态也不能依赖这个状态了。
例如,总数为sum,硬币为{1,3,5,7}.
不过下面的代码在硬币为{3,5,7}时不能正常工作。因为本题的解法是,根据前一个状态计算下一个状态。如果coins是{3,5,7},则例如sum=6时无解,那么后面的状态也不能依赖这个状态了。
public class Testing { public static void main(String[] args) { Testing.coin(); } static int i; static int j; static int[] min = new int[50]; static void coin() { int sum = 27; min[0] = 0; int[] coins = new int[]{1,3,5,7}; for(int i=1;i<=sum;i++){ for(int v : coins){ if(v<=i && min[i-v]+1 < min[i-1]+1){ min[i]=min[i-v]+1; } if (min[i] == 0){ min[i] = min[i - 1] + 1; } } } for(int i=0;i<=sum;i++){ System.out.println(i +":"+min[i]); } } }