zoukankan      html  css  js  c++  java
  • 滴滴出行秋招编程题

    算法是什么我记不住,But i do it my way. 解一道滴滴出行秋招编程题。

     

      只因在今日头条刷到一篇文章,我就这样伤害我自己,手贱。

      刷头条看到一篇文章写的滴滴出行2017秋招编程题,后来发现原文在这里http://www.cnblogs.com/SHERO-Vae/p/5882357.html。看了下,挺有意思,于是就想了想,又写了写,最终撸出来了。刚开始一看顿时感觉很熟悉,大学数据结构和算法课肯定讲过相关东西,什么深度搜索,广度搜索,最优路径,最优解。。。但是现在你让我说个一二三,我还就只记住几个名字,说不定名字都记错。我向来不喜欢死记东西,能查到的真的不想背下来,而学校里好多东西就喜欢弄个固定公式什么,让你背下来,然后考试。你让我考试我真没兴趣考高分,让我具体问题写代码,我还能捣鼓出来个一二三。言归正传。

      题目:

      简单来说,就是n,m的0和1矩阵,1就是路径。左上角进去,右上角出来。左右移动消耗1点体力,向下不消耗,向上消耗3点,然后给定体力值,求最优路线。

      

      

      

      

      原文有两道题目,第二道就是简单阶乘略过。

      思路:

      我也是写一点想一点,刚开始想用循环马上发现是不行的。后来写了个递归模拟每一步的移动,渐渐找到方向。再加入相应参数、条件终于实现目标,我不知道这叫什么算法,只是用我能用到的东西解决问题而已。

      把每一步的移动模拟为一个方法,判断下一步可以移动的方向,再次调用移动方法即可。注意每个可移动的方向都调用,那么所有可移动路线也就出来了。

      要是大学里的类似题目解法应该是,建立链表、树之类的,然后还有什么权重什么的,最后算什么权重什么的。。。。我猜大概是这样吧。。。而且我是一个都不知道咋回事了。

      代码:

      

      path是已走过的路径,bn,bm是上一个坐标,cn,cm是当前坐标,p是已消耗体力

      

       结果:

      

       鉴于本码渣算法方面真的是野生水平,在github上建了个算法相关仓库,以后有空会在上面捣鼓捣鼓。这道题代码就在上面,地址:https://github.com/631320085/Algorithm

      算法大神轻喷,完。

  • 相关阅读:
    pyqt信号和槽传递额外参数
    PyQt--QTreeWidget
    转载:futex同步机制详解
    Linux 下的同步机制
    Linux 下线程的理解
    Linux下的物理内存管理2-slab缓存的管理
    转:C语言的编译链接过程的介绍
    LInux中ThreadInfo中的preempt_count字段
    LInux中的物理内存管理
    Linux下的内核抢占
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/5892085.html
Copyright © 2011-2022 走看看