01 故事起源有一天小K去滑雪,雪山高低不平,當然小K只能從高的地方向低的地方滑,那如何選擇路線才能滑的最遠呢? 把這個問題抽象描述如下:
在一個二維地圖中,數值代表此處山的高度,在某個點只能滑向上下左右4個相鄰的點,最遠的滑行路線,也就等價于找出一條最長的數值下降路線。
比如下圖中的紅色路線就是此時最長的一條路線,長度為10。那要如何找出這樣的一條路線呢?




那就有了初步的框架了,從每一個起點出發,把可行的路線都找出來,也就是能走的路線都走一遍,再比較全局最優的就行了,而且這也正好符合深搜的算法框架。偽代碼
intfind(inti,intj){ //向4個方向嘗試 for(i=0->3){ if(ok){ returnfind(next)+1 } } } intmain(){ for(i=0->n){ for(j=0->m) { t=find(i,j) ans=max(ans,t) } } } 03 問題上面的做法可以得到最優解,但有一個問題。如下例,以15為起點的時候,會嘗試把6->5->4->3->2->1走一遍。但以16為起點的時候,還會嘗試把這條路線走一遍,這就會導致大量的重復計算。



intfind(vector<vector<int>>&snowMountain,vector<vector<int>>&f,inti,intj,intr,intc){ intx,y; if(f[i][j]!=-1) returnf[i][j]; f[i][j]=1; for(intk=0;k4;k++){ x=i+direction[k][0]; y=j+direction[k][1]; //validdirection if(x>=0&&x=0&&ysnowMountain[x][y]){ f[i][j]=maxOfTwo(f[i][j],find(snowMountain,f,x,y,r,c)+1); } } returnf[i][j]; }main函數
intmain(){ ifstreamfin("a.in"); ofstreamfout("a.out"); inti,j,r,c,maxHeight=0; fin>>r>>c; vector<vector<int>>snowMountain(r,vector<int>(c,0)); vector<vector<int>>f(r,vector<int>(c,-1)); for(i=0;ifor(j=0;j>snowMountain[i][j]; for(i=0;ifor(j=0;jendl; fin.close(); fout.close(); return0; } 06 總結記憶化搜索是一種非常實用的算法,因為深搜用遞歸很容易實現,記憶化又避免了重復子問題的計算,提高了運行效率。 這其實就是動態規劃的思想,常見的動態規劃用遞推實現,相比記憶化搜索實現上會更難一點,而記憶化搜索就沒有這個問題。 算法的適用場景也需要根據具體的問題來分析,一般常用在地圖或者樹型結構中。 審核編輯 :李倩
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
算法
+關注
關注
23文章
4709瀏覽量
95332 -
代碼
+關注
關注
30文章
4900瀏覽量
70671
原文標題:啥是記憶化搜索?
文章出處:【微信號:TheAlgorithm,微信公眾號:算法與數據結構】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
熱點推薦
一種環保型紅色發煙彈主裝藥配方設計與優化
(DSC)的功能,能夠在同一實驗條件下同時獲得樣品的質量變化和熱流信息。一種環保型紅色發煙彈主裝藥配方設計與優化【(1、武警工程大學研究生大隊2、武警工程大學裝備

無刷直流電機滑模觀測器參數優化設計方法
摘要:滑模反電勢觀測器的增益參數會影響觀測器的收斂速度以及動態響應性能,常見的設計方法是基于觀測器穩定性理論進行設計。提出一種利用遺傳算法在穩定域內搜索觀測誤差最小的增益參數的新方法,
發表于 06-27 16:48
漢思新材料取得一種PCB板封裝膠及其制備方法的專利
漢思新材料取得一種PCB板封裝膠及其制備方法的專利漢思新材料(深圳市漢思新材料科技有限公司)于2023年取得了一項關于PCB板封裝膠及其制備方法的發明專利(專利號:CN20231015

一種分段氣隙的CLLC變換器平面變壓器設計
氣隙設計的優點。
目錄1 概述2 一種分段氣隙的CLLC平面變壓器設計3 實驗驗證4 參考文獻
1 概述學者們從LLC拓撲原理、新型器件、改進拓撲、先進調制方法、諧振參數優化方法、磁性
發表于 03-27 13:57
一種永磁電機用轉子組件制作方法
一種永磁電機所使用的轉子組件,是由磁鋼與芯軸組裝而成,產品工作轉速80 000 r /mi n,磁鋼相對于芯軸的同軸度要小于O.015 mm。現有的裝配方法是:先在芯軸兩端面制作中心孔,然后直接
發表于 03-25 15:20
VirtualLab Fusion應用:參數優化文檔介紹
局部優化算法和一種全局優化算法。
參數優化文檔
可以為光學裝置生成參數優化文檔,該光學裝置通過探測器或分析儀輸出要
發表于 02-28 08:44
一種面向飛行試驗的數據融合框架
天地氣動數據一致性,針對某外形飛行試驗數據開展了典型對象的天地氣動數據融合方法研究。結合數據挖掘的隨機森林方法,本文提出了一種面向飛行試驗的數據融合框架,通過引入地面風洞試驗氣動數據,

一種創新的動態軌跡預測方法
本文提出了一種動態軌跡預測方法,通過結合歷史幀和歷史預測結果來提高預測的穩定性和準確性。它引入了歷史預測注意力模塊,以編碼連續預測之間的動態關系,并通過三重因子注意力模塊實現了最先進的性能。本方法能夠生成準確且穩定的未來軌跡,這

一種基于光強度相關反饋的波前整形方法
基于反饋的波前整形通過散射介質聚焦光是一種成熟的方法。在傳統的基于反饋的波前整形中,入射光被分成N個輸入模式,這些模式由空間光調制器(SLM)使用N個段進行調制,每個段具有相同數量和大小的像素

谷歌取消“站點鏈接搜索框”,適應新搜索需求
功能的取消似乎并未對用戶產生太大影響。 在當下這個信息快速更新的時代,人們不斷嘗試和探索新的搜索方式和工具,以獲取更加精準和全面的信息。谷歌的這一決定,或許正是其適應新時代用戶需求的一種體現。 同時,谷歌也在
BitEnergy AI公司開發出一種新AI處理方法
BitEnergy AI公司,一家專注于人工智能(AI)推理技術的企業,其工程師團隊創新性地開發了一種名為線性復雜度乘法(L-Mul)的AI處理方法。該方法的核心在于,它用整數加法替代
一種無透鏡成像的新方法
使用OAM-HHG EUV光束對高度周期性結構進行成像的EUV聚光顯微鏡 為了研究微電子或光子元件中的納米級圖案,一種基于無透鏡成像的新方法可以實現近乎完美的高分辨率顯微鏡。 層析成像是一種強大的無

評論