只因在今日頭條刷到一篇文章,我就這樣傷害我自己,手賤。
刷頭條看到一篇文章寫的滴滴出行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
文章列表