文章出處

  只因在今日頭條刷到一篇文章,我就這樣傷害我自己,手賤。

  刷頭條看到一篇文章寫的滴滴出行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

   算法大神輕噴,完。

   本文方法效率太低,于是在此基礎上進行了優化,優化結果在這里: http://www.cnblogs.com/xianyudotnet/p/5889775.html


文章列表




Avast logo

Avast 防毒軟體已檢查此封電子郵件的病毒。
www.avast.com


arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()