国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

益智游戲克星:BFS暴力搜索算法

算法與數(shù)據(jù)結(jié)構(gòu) ? 來源:算法與數(shù)據(jù)結(jié)構(gòu) ? 2020-08-03 16:53 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

滑動拼圖游戲大家應(yīng)該都玩過,下圖是一個 4x4 的滑動拼圖:

拼圖中有一個格子是空的,可以利用這個空著的格子移動其他數(shù)字。你需要通過移動這些數(shù)字,得到某個特定排列順序,這樣就算贏了。

我小時候還玩過一款叫做「華容道」的益智游戲,也和滑動拼圖比較類似:

那么這種游戲怎么玩呢?我記得是有一些套路的,類似于魔方還原公式。但是我們今天不來研究讓人頭禿的技巧,這些益智游戲通通可以用暴力搜索算法解決,所以今天我們就學(xué)以致用,用 BFS 算法框架來秒殺這些游戲。

一、題目解析

LeetCode 第 773 題就是滑動拼圖問題,題目的意思如下:

給你一個 2x3 的滑動拼圖,用一個 2x3 的數(shù)組board表示。拼圖中有數(shù)字 0~5 六個數(shù),其中數(shù)字 0 就表示那個空著的格子,你可以移動其中的數(shù)字,當(dāng)board變?yōu)閇[1,2,3],[4,5,0]]時,贏得游戲。

請你寫一個算法,計算贏得游戲需要的最少移動次數(shù),如果不能贏得游戲,返回 -1。

比如說輸入的二維數(shù)組board = [[4,1,2],[5,0,3]],算法應(yīng)該返回 5:

如果輸入的是board = [[1,2,3],[4,0,5]],則算法返回 -1,因為這種局面下無論如何都不能贏得游戲。

二、思路分析

對于這種計算最小步數(shù)的問題,我們就要敏感地想到 BFS 算法。

這個題目轉(zhuǎn)化成 BFS 問題是有一些技巧的,我們面臨如下問題:

1、一般的 BFS 算法,是從一個起點start開始,向終點target進(jìn)行尋路,但是拼圖問題不是在尋路,而是在不斷交換數(shù)字,這應(yīng)該怎么轉(zhuǎn)化成 BFS 算法問題呢?

2、即便這個問題能夠轉(zhuǎn)化成 BFS 問題,如何處理起點start和終點target?它們都是數(shù)組哎,把數(shù)組放進(jìn)隊列,套 BFS 框架,想想就比較麻煩且低效。

首先回答第一個問題,BFS 算法并不只是一個尋路算法,而是一種暴力搜索算法,只要涉及暴力窮舉的問題,BFS 就可以用,而且可以最快地找到答案。

你想想計算機(jī)怎么解決問題的?哪有那么多奇技淫巧,本質(zhì)上就是把所有可行解暴力窮舉出來,然后從中找到一個最優(yōu)解罷了。

明白了這個道理,我們的問題就轉(zhuǎn)化成了:如何窮舉出board當(dāng)前局面下可能衍生出的所有局面?這就簡單了,看數(shù)字 0 的位置唄,和上下左右的數(shù)字進(jìn)行交換就行了:

這樣其實就是一個 BFS 問題,每次先找到數(shù)字 0,然后和周圍的數(shù)字進(jìn)行交換,形成新的局面加入隊列…… 當(dāng)?shù)谝淮蔚竭_(dá)target時,就得到了贏得游戲的最少步數(shù)。

對于第二個問題,我們這里的board僅僅是 2x3 的二維數(shù)組,所以可以壓縮成一個一維字符串。其中比較有技巧性的點在于,二維數(shù)組有「上下左右」的概念,壓縮成一維后,如何得到某一個索引上下左右的索引?

很簡單,我們只要手動寫出來這個映射就行了:

vector>neighbor={ {1,3}, {0,4,2}, {1,5}, {0,4}, {3,1,5}, {4,2} };

這個含義就是,在一維字符串中,索引i在二維數(shù)組中的的相鄰索引為neighbor[i],:

至此,我們就把這個問題完全轉(zhuǎn)化成標(biāo)準(zhǔn)的 BFS 問題了,借助前文BFS 算法框架套路詳解的代碼框架,直接就可以套出解法代碼了:

intslidingPuzzle(vector>&board){ intm=2,n=3; stringstart=""; stringtarget="123450"; //將2x3的數(shù)組轉(zhuǎn)化成字符串 for(inti=0;i>neighbor={ {1,3}, {0,4,2}, {1,5}, {0,4}, {3,1,5}, {4,2} }; /*******BFS算法框架開始*******/ queueq; unordered_setvisited; q.push(start); visited.insert(start); intstep=0; while(!q.empty()){ intsz=q.size(); for(inti=0;i

至此,這道題目就解決了,其實框架完全沒有變,套路都是一樣的,我們只是花了比較多的時間將滑動拼圖游戲轉(zhuǎn)化成 BFS 算法。

很多益智游戲都是這樣,雖然看起來特別巧妙,但都架不住暴力窮舉,常用的算法就是回溯算法或者 BFS 算法,感興趣的話我們以后再聊。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 算法
    +關(guān)注

    關(guān)注

    23

    文章

    4784

    瀏覽量

    98044
  • 數(shù)組
    +關(guān)注

    關(guān)注

    1

    文章

    420

    瀏覽量

    27351

原文標(biāo)題:益智游戲克星:BFS暴力搜索算法

文章出處:【微信號:TheAlgorithm,微信公眾號:算法與數(shù)據(jù)結(jié)構(gòu)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    其利天下:13 萬轉(zhuǎn)暴力風(fēng)扇,驅(qū)動方案需要滿足哪些核心技術(shù)要求?

    暴力風(fēng)扇行業(yè),13萬轉(zhuǎn)超高轉(zhuǎn)速產(chǎn)品,是區(qū)分入門款與高端旗艦款的核心門檻。而一款13萬轉(zhuǎn)暴力風(fēng)扇能不能穩(wěn)定落地、實現(xiàn)大規(guī)模量產(chǎn),核心就取決于13萬轉(zhuǎn)暴力風(fēng)扇驅(qū)動方案的底層設(shè)計。
    的頭像 發(fā)表于 02-27 15:30 ?69次閱讀
    其利天下:13 萬轉(zhuǎn)<b class='flag-5'>暴力</b>風(fēng)扇,驅(qū)動方案需要滿足哪些核心技術(shù)要求?

    算法工程師需要具備哪些技能?

    算法工程師需要掌握一系列跨學(xué)科的技能,涵蓋數(shù)學(xué)基礎(chǔ)、編程能力、算法理論、工程實踐以及業(yè)務(wù)理解等多個方面。 以下是具體技能及學(xué)習(xí)建議: 線性代數(shù)核心內(nèi)容:矩陣運(yùn)算、特征值分解、向量空間等。應(yīng)用場
    發(fā)表于 02-27 10:53

    其利天下:方波驅(qū)動 VS FOC 驅(qū)動,暴力風(fēng)扇到底該選哪種驅(qū)動方案?

    暴力風(fēng)扇產(chǎn)品研發(fā)的廠家,幾乎都會面臨同一個靈魂拷問:無刷驅(qū)動方案,到底選方波驅(qū)動還是FOC驅(qū)動?網(wǎng)上的說法眾說紛紜:有人說FOC驅(qū)動是高端標(biāo)配,靜音又高效,選方波就是低端;也有人說暴力風(fēng)扇場景里
    的頭像 發(fā)表于 02-27 09:00 ?428次閱讀
    其利天下:方波驅(qū)動 VS FOC 驅(qū)動,<b class='flag-5'>暴力</b>風(fēng)扇到底該選哪種驅(qū)動方案?

    其利天下:13 萬轉(zhuǎn)高性能暴力風(fēng)扇無刷驅(qū)動方案

    其利天下作為深耕無刷電機(jī)驅(qū)動領(lǐng)域的專業(yè)方案商,專為暴力風(fēng)扇行業(yè)提供成熟穩(wěn)定、可快速量產(chǎn)的暴力風(fēng)扇無刷驅(qū)動方案,方案核心采用自研高性能MCU芯片,覆蓋手持涵道風(fēng)扇、工業(yè)高速風(fēng)扇等多場景暴力風(fēng)扇驅(qū)動需求
    的頭像 發(fā)表于 02-26 14:00 ?339次閱讀
    其利天下:13 萬轉(zhuǎn)高性能<b class='flag-5'>暴力</b>風(fēng)扇無刷驅(qū)動方案

    轉(zhuǎn)速稱王!揭秘其利天下13萬轉(zhuǎn)暴力風(fēng)扇驅(qū)動方案

    高轉(zhuǎn)速、強(qiáng)風(fēng)力與緊湊便攜的完美結(jié)合,正推動著暴力風(fēng)扇在戶外、工業(yè)及專業(yè)清潔領(lǐng)域的迅速普及。作為領(lǐng)先的暴力風(fēng)扇方案商,深圳市其利天下技術(shù)開發(fā)有限公司,基于對極限性能與可靠性的深刻理解,推出業(yè)界領(lǐng)先
    的頭像 發(fā)表于 02-05 14:36 ?4398次閱讀
    轉(zhuǎn)速稱王!揭秘其利天下13萬轉(zhuǎn)<b class='flag-5'>暴力</b>風(fēng)扇驅(qū)動方案

    線性搜索與二分搜索介紹

    搜索算法,搜索過程從數(shù)組的中間元素開始,如果中間元素正好是要查找的元素,則搜索過程結(jié)束;如果某一特定元素大于或者小于中間元素,則在數(shù)組大于或小于中間元素的那一半中查找,而且跟開始一樣從中間元素開始比較。
    發(fā)表于 12-01 07:36

    京東拍立淘API開發(fā)指南:從零開始構(gòu)建圖像搜索應(yīng)用

    京東圖片識別搜索API(拍立淘)是基于深度學(xué)習(xí)的視覺搜索服務(wù),通過卷積神經(jīng)網(wǎng)絡(luò)提取圖像特征向量,結(jié)合近似最近鄰搜索算法實現(xiàn)商品精準(zhǔn)匹配?。該技術(shù)解決了傳統(tǒng)文字搜索難以描述商品外觀的痛點
    的頭像 發(fā)表于 11-09 17:40 ?2157次閱讀

    模數(shù)轉(zhuǎn)換器主要類型有哪些

    模數(shù)轉(zhuǎn)換器采用逐步比較逼近策略,通過二進(jìn)制搜索算法將模擬信號轉(zhuǎn)換為數(shù)字值。這類轉(zhuǎn)換器在轉(zhuǎn)換速度和精度之間實現(xiàn)了良好平衡,廣泛應(yīng)用于中等采樣速率和中等精度的場景,如工業(yè)控制系統(tǒng)和醫(yī)療儀器。
    的頭像 發(fā)表于 11-03 16:36 ?672次閱讀

    領(lǐng)益智造:人形機(jī)器人業(yè)務(wù)已產(chǎn)生收入

    10月23日領(lǐng)益智造在互動平臺透露;人形機(jī)器人業(yè)務(wù)已經(jīng)產(chǎn)生收入;目前已獲得海內(nèi)外機(jī)器人客戶的硬件訂單,包括有零部件、靈巧手、關(guān)節(jié)模組、整機(jī)組裝等。但并未透露海外具體的客戶名稱,以及具體的訂單金額
    的頭像 發(fā)表于 10-23 11:29 ?1290次閱讀

    微店關(guān)鍵詞搜索接口核心突破:動態(tài)權(quán)重算法與語義引擎的實戰(zhàn)落地

    本文詳解微店搜索接口從基礎(chǔ)匹配到智能推薦的技術(shù)進(jìn)階路徑,涵蓋動態(tài)權(quán)重、語義理解與行為閉環(huán)三大創(chuàng)新,助力商家提升搜索轉(zhuǎn)化率、商品曝光與用戶留存,實現(xiàn)技術(shù)驅(qū)動的業(yè)績增長。
    的頭像 發(fā)表于 10-15 14:38 ?431次閱讀

    用拼多多 API 實現(xiàn)拼多多店鋪商品搜索權(quán)重提升

    將分步講解如何利用 API 實現(xiàn)這一目標(biāo),確保內(nèi)容真實可靠。 1. 理解搜索權(quán)重及其重要性 搜索權(quán)重是平臺算法對商品排名的綜合評分,基于多個因素計算。例如: 關(guān)鍵詞相關(guān)性:商品標(biāo)題和描述與用戶
    的頭像 發(fā)表于 08-19 17:23 ?786次閱讀
    用拼多多 API 實現(xiàn)拼多多店鋪商品<b class='flag-5'>搜索</b>權(quán)重提升

    仁懋MOS:暴力風(fēng)扇高效運(yùn)轉(zhuǎn)的幕后功臣

    暴力風(fēng)扇的世界里,每一次強(qiáng)勁風(fēng)力的輸出,都離不開眾多精密器件的協(xié)同工作。而仁懋電子的MOSFET(金屬氧化物半導(dǎo)體場效應(yīng)晶體管),憑借其出色的性能,成為了暴力風(fēng)扇產(chǎn)品的關(guān)鍵選擇。下面,就為大家?guī)?/div>
    的頭像 發(fā)表于 07-24 17:43 ?970次閱讀
    仁懋MOS:<b class='flag-5'>暴力</b>風(fēng)扇高效運(yùn)轉(zhuǎn)的幕后功臣

    【HarmonyOS next】ArkUI-X休閑益智連連看【進(jìn)階】

    ;: 統(tǒng)一UI描述:ArkTS聲明式語法在雙端生成原生UI組件 共享核心邏輯:TypeScript編寫的游戲算法(如BFS路徑搜索)直接復(fù)用 原生渲染引擎:各平臺使用系統(tǒng)原生渲染管線(
    發(fā)表于 06-28 21:51

    【HarmonyOS next】ArkUI-X休閑益智猜字謎【基礎(chǔ)】

    下圖是在iOS中的運(yùn)行效果 下圖是在HarmonyOS中的運(yùn)行效果 今天咱們來聊聊如何用ArkUI-X這個新興框架實現(xiàn)跨端開發(fā),通過一個猜字謎小游戲帶大家感受它的開發(fā)魅力。本文不僅能讓你看到
    發(fā)表于 06-26 20:01

    笙泉高轉(zhuǎn)速暴力風(fēng)扇控制方案(MDF101A)登場

    本帖最后由 noctor 于 2025-5-21 10:32 編輯 笙泉高轉(zhuǎn)速\"暴力風(fēng)扇\"控制方案(MDF101A)登場 手持暴力風(fēng)扇需求穩(wěn)定成長 隨著全球氣溫
    發(fā)表于 05-20 15:32