查看: 835| 回复: 6
跳转到指定楼层
上一主题 下一主题
收起左侧

[动态规划] 求问两个code的区别在哪?322. Coin change

全局:

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看附件。没有帐号?注册账号

x
本帖最后由 pnwair 于 2022-2-1 12:06 编辑

一个int array,里面的数是硬币的面值,求最少数量的硬币组成一个amount

1.


2.



一个答案是对的,每次从第一个数查看;一个是错的,每次从自己开始查看。为什么是错的啊?实在想不明白。


image.png (140.22 KB, 下载次数: 6)

image.png

评分

参与人数 1大米 +3 收起 理由
14417335 + 3 给你点个赞!

查看全部评分


上一篇:求助两道题,一道1293一道是jump game的变形
下一篇:Leetcode 题型分类 1)search: DFS/Backtracking and BFS
🔗
66j 2022-2-2 03:02:45 | 只看该作者
全局:
本帖最后由 66j 于 2022-2-1 14:06 编辑

改成这样就能过。因为你会skip掉一些state。但第2个code永远都是从0开始,所以不会skip 一些state。
class Solution {
    int dp[][];
    public int coinChange(int[] coins, int amount) {
        dp = new int[amount + 1][coins.length + 1];
        return dfs(coins, amount, 0);
    }
   
    public int dfs(int coins[], int amount, int start) {
        if(amount < 0) {
            return -1;
        }
        if(amount == 0) {
            return 0;
        }
        
        if(dp[amount][start] != 0) return dp[amount][start];
        
        int res = Integer.MAX_VALUE;
        for(int i = start; i < coins.length; i++) {
            int x = dfs(coins, amount - coins, i);
            if(x >= 0) {
                res = Math.min(res, 1 + x);
            }
        }
        if(res == Integer.MAX_VALUE)res = -1;
        return dp[amount][start] = res;
    }
}
回复

使用道具 举报

🔗
 楼主| pnwair 2022-2-2 04:43:53 | 只看该作者
全局:
66j 发表于 2022-2-1 13:02
改成这样就能过。因为你会skip掉一些state。但第2个code永远都是从0开始,所以不会skip 一些state。
class ...

确实过了,能帮我举个具体的例子吗?例如skip了哪个state?
回复

使用道具 举报

🔗
 楼主| pnwair 2022-2-2 12:26:05 | 只看该作者
全局:
66j 发表于 2022-2-1 13:02
改成这样就能过。因为你会skip掉一些state。但第2个code永远都是从0开始,所以不会skip 一些state。
class ...

我以为已经找过这个combination就不用再查看了,但是是错的,我理解上是不是有什么重大误区?
回复

使用道具 举报

🔗
66j 2022-2-2 12:30:26 | 只看该作者
全局:
pnwair 发表于 2022-2-1 23:26
我以为已经找过这个combination就不用再查看了,但是是错的,我理解上是不是有什么重大误区?

因为你dp[amount] !=0 就return,所以有可能被一个不是最优的给记录掉
回复

使用道具 举报

🔗
66j 2022-2-2 12:31:18 | 只看该作者
全局:
pnwair 发表于 2022-2-1 23:26
我以为已经找过这个combination就不用再查看了,但是是错的,我理解上是不是有什么重大误区?

但是第二个你每个都重新check一下,所以不会有这种情况。但建议你用我那种,把所有state 都列出来,就不容易出错
回复

使用道具 举报

🔗
 楼主| pnwair 2022-2-3 00:11:13 | 只看该作者
全局:
66j 发表于 2022-2-1 22:31
但是第二个你每个都重新check一下,所以不会有这种情况。但建议你用我那种,把所有state 都列出来,就不 ...

我画了画图,我那个确实是错误的,还是用你的答案保险,谢谢你的指导。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

>
快速回复 返回顶部 返回列表