您的位置:首页 > 其它

最少硬币问题

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时无解,那么后面的状态也不能依赖这个状态了。

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]);
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: