连 01 背包都看不懂, 零钱兑换都不会,还能继续走 Coding 这条路吗

2020-11-16 12:10:29 +08:00
 guixiexiezou

辞职许久了,思考了很久,觉得自己是不是不太适合当程序员了?最近看算法,刷 leetcode,简单的基本都会(相信在做的各位也没几个不会的),遇到最优解的,动态规划的,基本一个都不会了(哭。。。)

然后昨天今天特意看了下 01 背包问题,我发现我居然看不懂了。。。

今天看到一个简单的零钱兑换问题。只会用回溯法。。。我是不是没救了。。。

附代码

private int change0(int[] arr, int target) {
        Arrays.sort(arr);
        ArrayDeque<Integer> stack = new ArrayDeque<>();
        int index = arr.length-1;
        while (!stack.isEmpty() || index >= 0) {
            if (index < 0) {
                if (stack.isEmpty()) return -1; //找不到
                int last = stack.pop();
                target += arr[last];
                index = last-1;
                continue;
            }
            if (arr[index] == target) {
                return stack.size()+1;
            } else if (arr[index] > target) {
                index--;
            } else {
                target -= arr[index];
                stack.push(index);
            }
        }
        return -1;
}
8599 次点击
所在节点    程序员
75 条回复
hubahuba
2020-11-16 12:17:02 +08:00
cao
guixiexiezou
2020-11-16 12:25:42 +08:00
而且代码还是错误的.........哎😔
v2webdev
2020-11-16 12:26:48 +08:00
矫情的话,去一亩三分地上吧,V 站不适合。
crclz
2020-11-16 12:29:14 +08:00
0-1 背包,不要试着去理解它,去感受它。

多做几个变形题(做不出来看题解也行),自然就理解了。
darklowly
2020-11-16 12:30:46 +08:00
写程序有两大条路

1 系统类
2 算法类

系统类,不需要那么多的算法,简单的数据,链表,树,hash 就够了。其他的就是计算机系统方面的知识。例如,组成原理,操作系统,设计模式,架构模式。这条路适合智力正常范围的人,因为智力正常的人,更容易感受到困难,就更容易设计简单的系统,反而对设计有好处。

算法类,侧重点就是数学,适合智力好一点的人,反而这类人不容易感受到困难,设计的系统会违反常人的直觉,反而是不好的设计。当然也有很多智商不够,自以为很够的人,既设计不好算法,又搞的很复杂。

所以不要灰心。
BBCCBB
2020-11-16 12:35:07 +08:00
你要有点基础后就好了, 别气馁.. 刚开始时都是这样, 不停的刷, 总结, 系统的学.

0-1 背包可以看看这个 https://www.cnblogs.com/labuladong/p/12455089.html
guixiexiezou
2020-11-16 12:53:42 +08:00
@v2webdev 可能是太久没工作了吧,心又静不下来。多谢指点
guixiexiezou
2020-11-16 12:55:30 +08:00
@darklowly 嗯嗯,多谢指点。我也觉得我如果继续 coding 下去,最多最多还是只能走工程这条路,也就是所谓的用别别人的轮子
guixiexiezou
2020-11-16 12:55:54 +08:00
@BBCCBB 多谢,我去看看
guixiexiezou
2020-11-16 12:56:37 +08:00
@crclz 我再感受 2 天吧,说不定真就领悟了
rodrick
2020-11-16 12:59:14 +08:00
不要灰心,换个角度想想,你如果转行了又怎么知道自己更适合另外一行呢
deepall
2020-11-16 13:19:40 +08:00
这不是凡尔赛人?
tgich
2020-11-16 13:26:23 +08:00
@deepall 这不就是凡尔赛人
a62527776a
2020-11-16 13:30:04 +08:00
太牛了(吹捧一波
keymao
2020-11-16 13:32:38 +08:00
这不就是凡尔赛人
guchengyehai1
2020-11-16 13:38:02 +08:00
回溯再加个记忆就和 dp 差不多了
Mac
2020-11-16 13:38:45 +08:00
我只会百度谷歌,其它的一概不会
shubo83
2020-11-16 13:42:45 +08:00
可以先当不会算法的野生程序员,比如我
leido
2020-11-16 13:45:33 +08:00
楼主, 背包九讲看了吗?

DP 根本算不上什么高级算法, 扯不到什么系统和算法上去 @darklowly

背包问题我高中就会解了(自学), 现在还在做运维 , 我是不是比楼主更菜
wph95
2020-11-16 13:47:40 +08:00
背包问题一个教程就可以搞定 :)
https://github.com/tianyicui/pack
// 背包九讲永远滴神

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/725721

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX