在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

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

算法與數據結構 ? 來源:算法與數據結構 ? 2020-08-03 16:53 ? 次閱讀

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

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

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

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

一、題目解析

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

給你一個 2x3 的滑動拼圖,用一個 2x3 的數組board表示。拼圖中有數字 0~5 六個數,其中數字 0 就表示那個空著的格子,你可以移動其中的數字,當board變為[[1,2,3],[4,5,0]]時,贏得游戲。

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

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

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

二、思路分析

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

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

1、一般的 BFS 算法,是從一個起點start開始,向終點target進行尋路,但是拼圖問題不是在尋路,而是在不斷交換數字,這應該怎么轉化成 BFS 算法問題呢?

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

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

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

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

這樣其實就是一個 BFS 問題,每次先找到數字 0,然后和周圍的數字進行交換,形成新的局面加入隊列…… 當第一次到達target時,就得到了贏得游戲的最少步數。

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

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

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

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

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

intslidingPuzzle(vector>&board){ intm=2,n=3; stringstart=""; stringtarget="123450"; //將2x3的數組轉化成字符串 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

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

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

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 算法
    +關注

    關注

    23

    文章

    4615

    瀏覽量

    92990
  • 數組
    +關注

    關注

    1

    文章

    417

    瀏覽量

    25968

原文標題:益智游戲克星:BFS暴力搜索算法

文章出處:【微信號:TheAlgorithm,微信公眾號:算法與數據結構】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    基于PY32MD310單片機開發的11萬轉強力渦輪暴力風扇方案介紹

    今天給大家介紹下我們的11萬轉高速暴力風扇方案,搭載了11萬轉高性能無刷電機、采用獨特旋鈕設計產出更大風力。暴力風扇在日常生活中有著很好的應用。可以用做一些電子產品清灰,寵物毛發吹干,除塵助燃等
    的頭像 發表于 01-02 17:52 ?97次閱讀

    算法到生命,自動化人工生命搜索已然顯現?

    」像生命體一樣運作。 ASAL 其中一位研究者 Phillip Isola 近日,Sakana AI團隊攜手麻省理工學院(MIT)、開放人工智能研究院(OpenAI)以及瑞士AI實驗室IDSIA等機構研究人員,共同提出了“自動化人工生命搜索”(ASAL)的新算法。 尤其,
    的頭像 發表于 12-31 10:54 ?71次閱讀
    從<b class='flag-5'>算法</b>到生命,自動化人工生命<b class='flag-5'>搜索</b>已然顯現?

    ChatGPT新增實時搜索與高級語音功能

    。OpenAI對搜索算法進行了深度優化,使得ChatGPT能夠在用戶提出問題后,迅速獲取到分鐘級別的最新信息,包括股票、新聞等。這一功能的加入,極大地滿足了用戶對即時數據的需求,使得ChatGPT在各類應用場景中更加得心應手。 同時,ChatGPT還推出了高級語音功能。在高級語
    的頭像 發表于 12-17 14:08 ?205次閱讀

    鼎盛合 無刷電機渦輪增壓暴力風扇方案

    酷熱的夏天常常讓人感到煩躁不安,而風扇作為一種便捷的消暑工具能夠為人們帶來一絲清涼。傳統的有刷風扇在使用過程中存在著一些噪音大、壽命短、風力不夠強勁等問題。為了解決這些問題,暴力無刷風扇應運而生。它
    的頭像 發表于 11-11 15:57 ?544次閱讀

    UHF RFID自適應射頻干擾對消技術

    。針對目前有源干擾對消技術存在的抑制效果和實時性較差的缺點在分析有源干擾對消原理的基礎上提出了基于改進Powell 搜索算法的自適應射頻干擾對消方案。設計了有源對消電路通過改進的Powell 最優值搜索算法實現電路控制參數的自適應調節使電路工作在最優的抑制狀態。測試結果表
    發表于 11-05 10:22 ?0次下載

    OpenAI推出ChatGPT搜索功能

    近日,OpenAI再次邁出了重要的一步,為其廣受好評的ChatGPT平臺添加了一項全新的搜索功能。 據悉,這項被命名為“ChatGPT搜索”的新功能,將為用戶帶來前所未有的搜索體驗。以往,當用戶需要
    的頭像 發表于 11-04 10:34 ?361次閱讀

    谷歌取消“站點鏈接搜索框”,適應新搜索需求

    近日,谷歌發布了一則通知,決定取消搜索結果中的“站點鏈接搜索框”。這一功能已經陪伴了用戶十多年,它允許用戶在特定網站上進行更深入的搜索,為許多網民提供了便利。然而,隨著時代的變遷和技術的進步,這一
    的頭像 發表于 10-23 11:20 ?343次閱讀

    MS3142 馬達驅動:電動積木益智游戲的創新動力

    在當今科技飛速發展的時代,電動積木益智游戲以其獨特的魅力吸引著眾多玩家,尤其是孩子們。而在這背后,MS3142 馬達驅動發揮著至關重要的作用。接下來,讓我們一同深入探索 MS3142 馬達驅動在電動
    的頭像 發表于 09-14 17:37 ?304次閱讀

    電商搜索革命:大模型如何重塑購物體驗?

    自我介紹:京東零售搜推算法算法工程師,專注于大模型技術以及在 AI 助手搜推等領域的應用探索和實踐。在 AI 助手,NLP 和搜索領域有十多年研發實踐經驗,在 AI/NLP 領域申請超過 15
    的頭像 發表于 08-19 15:09 ?287次閱讀

    基于 FPGA 的飛機大戰游戲系統設計

    第一部分 設計概述1.1 設計目的我們設計了一款基于 FPGA 的SEA開發板 的飛機大戰游戲。飛機大戰游戲是一款休閑益智游戲,既簡單又耐玩。在初始界面,我們有開始
    發表于 07-24 20:03

    仁懋MOSFET:驅動13萬轉暴力風扇無刷電機的隱形力量

    仁懋MOSFET驅動13萬轉暴力風扇無刷電機應用炎炎夏日,一款性能卓越、風力強勁的戶外暴力風扇無疑是消暑利器。而在這背后,仁懋電子的MOSFET產品以其卓越的性能和穩定性,成為了這些高性能風扇
    的頭像 發表于 07-18 08:37 ?724次閱讀
    仁懋MOSFET:驅動13萬轉<b class='flag-5'>暴力</b>風扇無刷電機的隱形力量

    揭秘谷歌搜索算法工作原理,與官方聲明存在矛盾

    有著十多年搜索引擎優化經驗的蘭德·菲什金,近日透露他收到一份長達2500頁的文件,據稱這是對谷歌搜索算法工作原理的真實揭示,而非谷歌官方所聲稱的那樣。
    的頭像 發表于 05-29 16:00 ?605次閱讀

    HarmonyOS開發實戰:【親子拼圖游戲

    編程語言編寫的一個分布式益智拼圖游戲,可以兩臺設備同時開啟一局拼圖游戲,每次點擊九宮格內的圖片,都會同步更新兩臺設備的圖片位置
    的頭像 發表于 04-16 17:00 ?593次閱讀
    HarmonyOS開發實戰:【親子拼圖<b class='flag-5'>游戲</b>】

    智己汽車依法指控網絡暴力和流量霸凌

    投訴信爆料,自2024年4月9日以來,智己汽車遭遇有組織的網絡暴力和流量霸凌,直接影響到企業的正常經營和聲譽。智己汽車據此向國家相關主管部門提出實名舉報,請求按照中央網信辦2024年“清朗”系列專項整治活動的要求,嚴肅處理這一惡劣的網絡暴力行為。
    的頭像 發表于 04-11 16:45 ?642次閱讀

    鴻蒙OS開發之 融合搜索概述

    HarmonyOS 融合搜索為開發者提供搜索引擎級的全文搜索能力,可支持應用內搜索和系統全局搜索,為用戶提供更加準確、高效的
    的頭像 發表于 01-29 16:24 ?585次閱讀
    鴻蒙OS開發之  融合<b class='flag-5'>搜索</b>概述
    主站蜘蛛池模板: 色涩在线| 国产成人综合一区人人| 欧美人与zoxxxx另类9| 天天射天天色天天干| 色婷亚洲| 五月婷婷激情视频| 美女扒开尿口让男生添 漫画| 四虎东方va私人影库在线观看| 欧美一区二区三区激情啪啪| 在线一区观看| 视频h在线观看| 夜夜春宵翁熄性放纵古代| 性色欧美xo影院| 高清在线观看视频| 欧美在线成人午夜影视| 午夜视频在线观看网站| 俺去久久| 99久久99久久免费精品蜜桃 | 狠狠色噜噜狠狠狠狠999米奇| 69xxx欧美| 久久久久国产一级毛片高清片| 亚洲大胆精品337p色| 一区二区三区四区五区| 国产精品香蕉成人网在线观看| 亚洲a视频| 香蕉色网| 四虎精品影院永久在线播放| 亚洲va中文字幕无码| 日韩大胆| 日本高清视频成人网www| 三级成人影院| 欧美一级特黄乱妇高清视频 | 五月婷婷六月丁香综合| 欧美一级鲁丝片| cijilu刺激 国产免费的| 久久精品国波多野结衣| 亚洲视频在线播放| 亚洲一区视频| 五月天丁香婷婷开心激情五月| 六月婷婷久久| 天天搞天天爽|