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




那就有了初步的框架了,從每一個(gè)起點(diǎn)出發(fā),把可行的路線都找出來(lái),也就是能走的路線都走一遍,再比較全局最優(yōu)的就行了,而且這也正好符合深搜的算法框架。偽代碼
intfind(inti,intj){ //向4個(gè)方向嘗試 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 問(wèn)題上面的做法可以得到最優(yōu)解,但有一個(gè)問(wèn)題。如下例,以15為起點(diǎn)的時(shí)候,會(huì)嘗試把6->5->4->3->2->1走一遍。但以16為起點(diǎn)的時(shí)候,還會(huì)嘗試把這條路線走一遍,這就會(huì)導(dǎo)致大量的重復(fù)計(jì)算。



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函數(shù)
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 總結(jié)記憶化搜索是一種非常實(shí)用的算法,因?yàn)樯钏延眠f歸很容易實(shí)現(xiàn),記憶化又避免了重復(fù)子問(wèn)題的計(jì)算,提高了運(yùn)行效率。 這其實(shí)就是動(dòng)態(tài)規(guī)劃的思想,常見(jiàn)的動(dòng)態(tài)規(guī)劃用遞推實(shí)現(xiàn),相比記憶化搜索實(shí)現(xiàn)上會(huì)更難一點(diǎn),而記憶化搜索就沒(méi)有這個(gè)問(wèn)題。 算法的適用場(chǎng)景也需要根據(jù)具體的問(wèn)題來(lái)分析,一般常用在地圖或者樹(shù)型結(jié)構(gòu)中。 審核編輯 :李倩
聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。
舉報(bào)投訴
-
算法
+關(guān)注
關(guān)注
23文章
4710瀏覽量
95387 -
代碼
+關(guān)注
關(guān)注
30文章
4900瀏覽量
70737
原文標(biāo)題:啥是記憶化搜索?
文章出處:【微信號(hào):TheAlgorithm,微信公眾號(hào):算法與數(shù)據(jù)結(jié)構(gòu)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
熱點(diǎn)推薦
一種環(huán)保型紅色發(fā)煙彈主裝藥配方設(shè)計(jì)與優(yōu)化
(DSC)的功能,能夠在同一實(shí)驗(yàn)條件下同時(shí)獲得樣品的質(zhì)量變化和熱流信息。一種環(huán)保型紅色發(fā)煙彈主裝藥配方設(shè)計(jì)與優(yōu)化【(1、武警工程大學(xué)研究生大隊(duì)2、武警工程大學(xué)裝備

無(wú)刷直流電機(jī)滑模觀測(cè)器參數(shù)優(yōu)化設(shè)計(jì)方法
摘要:滑模反電勢(shì)觀測(cè)器的增益參數(shù)會(huì)影響觀測(cè)器的收斂速度以及動(dòng)態(tài)響應(yīng)性能,常見(jiàn)的設(shè)計(jì)方法是基于觀測(cè)器穩(wěn)定性理論進(jìn)行設(shè)計(jì)。提出一種利用遺傳算法在穩(wěn)定域內(nèi)搜索觀測(cè)誤差最小的增益參數(shù)的新方法,
發(fā)表于 06-27 16:48
漢思新材料取得一種PCB板封裝膠及其制備方法的專(zhuān)利
漢思新材料取得一種PCB板封裝膠及其制備方法的專(zhuān)利漢思新材料(深圳市漢思新材料科技有限公司)于2023年取得了一項(xiàng)關(guān)于PCB板封裝膠及其制備方法的發(fā)明專(zhuān)利(專(zhuān)利號(hào):CN20231015

一種分段氣隙的CLLC變換器平面變壓器設(shè)計(jì)
氣隙設(shè)計(jì)的優(yōu)點(diǎn)。
目錄1 概述2 一種分段氣隙的CLLC平面變壓器設(shè)計(jì)3 實(shí)驗(yàn)驗(yàn)證4 參考文獻(xiàn)
1 概述學(xué)者們從LLC拓?fù)湓?、新型器件、改進(jìn)拓?fù)?、先進(jìn)調(diào)制方法、諧振參數(shù)優(yōu)化方法、磁性
發(fā)表于 03-27 13:57
一種永磁電機(jī)用轉(zhuǎn)子組件制作方法
一種永磁電機(jī)所使用的轉(zhuǎn)子組件,是由磁鋼與芯軸組裝而成,產(chǎn)品工作轉(zhuǎn)速80 000 r /mi n,磁鋼相對(duì)于芯軸的同軸度要小于O.015 mm?,F(xiàn)有的裝配方法是:先在芯軸兩端面制作中心孔,然后直接
發(fā)表于 03-25 15:20
VirtualLab Fusion應(yīng)用:參數(shù)優(yōu)化文檔介紹
局部優(yōu)化算法和一種全局優(yōu)化算法。
參數(shù)優(yōu)化文檔
可以為光學(xué)裝置生成參數(shù)優(yōu)化文檔,該光學(xué)裝置通過(guò)探測(cè)器或分析儀輸出要
發(fā)表于 02-28 08:44
記憶示波器的原理和應(yīng)用
記憶示波器是一種基于數(shù)字處理原理的測(cè)量?jī)x器,其原理和應(yīng)用可以從以下幾個(gè)方面進(jìn)行詳細(xì)介紹:一、記憶示波器的原理
核心組件:記憶示波器的核心是
發(fā)表于 01-06 15:50
一種面向飛行試驗(yàn)的數(shù)據(jù)融合框架
天地氣動(dòng)數(shù)據(jù)一致性,針對(duì)某外形飛行試驗(yàn)數(shù)據(jù)開(kāi)展了典型對(duì)象的天地氣動(dòng)數(shù)據(jù)融合方法研究。結(jié)合數(shù)據(jù)挖掘的隨機(jī)森林方法,本文提出了一種面向飛行試驗(yàn)的數(shù)據(jù)融合框架,通過(guò)引入地面風(fēng)洞試驗(yàn)氣動(dòng)數(shù)據(jù),

一種創(chuàng)新的動(dòng)態(tài)軌跡預(yù)測(cè)方法
本文提出了一種動(dòng)態(tài)軌跡預(yù)測(cè)方法,通過(guò)結(jié)合歷史幀和歷史預(yù)測(cè)結(jié)果來(lái)提高預(yù)測(cè)的穩(wěn)定性和準(zhǔn)確性。它引入了歷史預(yù)測(cè)注意力模塊,以編碼連續(xù)預(yù)測(cè)之間的動(dòng)態(tài)關(guān)系,并通過(guò)三重因子注意力模塊實(shí)現(xiàn)了最先進(jìn)的性能。本方法能夠生成準(zhǔn)確且穩(wěn)定的未來(lái)軌跡,這

一種基于光強(qiáng)度相關(guān)反饋的波前整形方法
基于反饋的波前整形通過(guò)散射介質(zhì)聚焦光是一種成熟的方法。在傳統(tǒng)的基于反饋的波前整形中,入射光被分成N個(gè)輸入模式,這些模式由空間光調(diào)制器(SLM)使用N個(gè)段進(jìn)行調(diào)制,每個(gè)段具有相同數(shù)量和大小的像素

一種簡(jiǎn)單高效配置FPGA的方法
本文描述了一種簡(jiǎn)單高效配置FPGA的方法,該方法利用微處理器從串行外圍接口(SPI)閃存配置FPGA設(shè)備。這種方法減少了硬件組件、板空間和成本。

谷歌取消“站點(diǎn)鏈接搜索框”,適應(yīng)新搜索需求
功能的取消似乎并未對(duì)用戶(hù)產(chǎn)生太大影響。 在當(dāng)下這個(gè)信息快速更新的時(shí)代,人們不斷嘗試和探索新的搜索方式和工具,以獲取更加精準(zhǔn)和全面的信息。谷歌的這一決定,或許正是其適應(yīng)新時(shí)代用戶(hù)需求的一種體現(xiàn)。 同時(shí),谷歌也在
BitEnergy AI公司開(kāi)發(fā)出一種新AI處理方法
BitEnergy AI公司,一家專(zhuān)注于人工智能(AI)推理技術(shù)的企業(yè),其工程師團(tuán)隊(duì)創(chuàng)新性地開(kāi)發(fā)了一種名為線性復(fù)雜度乘法(L-Mul)的AI處理方法。該方法的核心在于,它用整數(shù)加法替代
一種利用wireshark對(duì)遠(yuǎn)程服務(wù)器/路由器網(wǎng)絡(luò)抓包方法
一種利用wireshark對(duì)遠(yuǎn)程服務(wù)器/路由器網(wǎng)絡(luò)抓包方法

一種無(wú)透鏡成像的新方法
使用OAM-HHG EUV光束對(duì)高度周期性結(jié)構(gòu)進(jìn)行成像的EUV聚光顯微鏡 為了研究微電子或光子元件中的納米級(jí)圖案,一種基于無(wú)透鏡成像的新方法可以實(shí)現(xiàn)近乎完美的高分辨率顯微鏡。 層析成像是一種強(qiáng)大的無(wú)

評(píng)論