题解 | #兑换零钱(一)#

兑换零钱(一)

https://www.nowcoder.com/practice/3911a20b3f8743058214ceaa099eeb45

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 最少货币数
 * @param arr int整型一维数组 the array
 * @param arrLen int arr数组长度
 * @param aim int整型 the target
 * @return int整型
 */

#define min(a,b) a<b?a:b

int minMoney(int* arr, int arrLen, int aim ) {
    // write code here
    if(arrLen == 0) return -1;
    int* dp = (int*)malloc(sizeof(int) * (aim + 1));
    dp[0] = 0;
    for(int i = 1; i < aim + 1; i++) {
        dp[i] = aim + 1;
        for(int j = 0; j < arrLen; j++) {
            if(i - arr[j] >= 0) {
                // printf("发现货币%d小于当前目标%d\n", arr[j],i);
                dp[i] = min(dp[i - arr[j]] + 1, dp[i]);
                // printf("目前兑换%d花费最少的零钱张数是%d\n",i,dp[i]);
            }
        }
    }
    if(dp[aim] > aim) return -1;
    return dp[aim];
}

全部评论

相关推荐

白火同学:1、简历可以浓缩成一页,简历简历先要“简”方便HR快速过滤出有效信息,再要“历”用有效信息突出个人的含金量。 2、教育背景少了入学时间~毕业时间,HR判断不出你是否为应届生。 3、如果你的平台账号效果还不错,可以把账号超链接或者用户名贴到对应位置,一是方便HR知道你是具体做了什么内容的运营,看到账号一目了然,二是口说无凭,账号为证,这更有说服力。
面试被问期望薪资时该如何...
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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