最少需要多少枚硬币

日本旅行

http://www.nowcoder.com/questionTerminal/c21a64b2127b4138b75e86caeb94aaa0

钱从大到小一枚一枚加起来就行了,直到等于A为止:

import java.util.*;
public class Main {
    public static void main(String[] args) throws Exception{
        Scanner sc = new Scanner(System.in);
        int[] C = new int[6], v = {1, 5, 10, 50, 100, 500};
        for(int i = 0; i < 6; ++i) C[i] = sc.nextInt();
        int A = sc.nextInt(), p = 5, r = 0;    //货币指针p初始在500元的位置,r是硬币枚数
        while(A > 0){
            if(p < 0) break;
            if(C[p] == 0 || A < v[p]){    //没有当前种类的硬币,或者单面值已超过A,就看下一个小面值
                p--;
                continue;
            }
            A -= v[p];
            C[p]--;    //每用一个硬币,就减少一个
            r++;
            if(A == 0){    //正好凑够了A这么多钱
                System.out.println(r);
                return;
            }
        }
        System.out.println("NOWAY");
    }
}
全部评论

相关推荐

大象1113:RM竞赛实力这么强,转正都转不了,这公司得多强?要求的多高?
点赞 评论 收藏
分享
代码飞升AL:同学院本 你这都是无效实习和跳槽 下一段底线是去一个稍微知名的公司 本质是骑驴找马 你这一直骑驴换来换去没什么区别
双非有机会进大厂吗
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务