国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

斗破蒼穹算法——蕭炎的成長之路(二)

這篇具有很好參考價(jià)值的文章主要介紹了斗破蒼穹算法——蕭炎的成長之路(二)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

前言

斗破蒼穹算法——蕭炎的成長之路(二),解決算法,一個(gè)專欄就夠了,算法,動(dòng)畫,圖論
「作者主頁」:雪碧有白泡泡
「個(gè)人網(wǎng)站」:雪碧的個(gè)人網(wǎng)站
「推薦專欄」

java一站式服務(wù)
前端炫酷代碼分享
uniapp-從構(gòu)建到提升
從0到英雄,vue成神之路
解決算法,一個(gè)專欄就夠了
架構(gòu)咱們從0說
★ 數(shù)據(jù)流通的精妙之道★

斗破蒼穹算法——蕭炎的成長之路(二),解決算法,一個(gè)專欄就夠了,算法,動(dòng)畫,圖論

1. 引言

主角介紹

蕭炎是一位虛構(gòu)角色,出自于中國作家天蠶土豆的小說《斗破蒼穹》。在小說中,蕭炎是一個(gè)年輕的天才煉藥師和斗氣修煉者,他經(jīng)歷了許多困難和挑戰(zhàn),通過不斷努力和智慧,最終成為了強(qiáng)大的存在。
斗破蒼穹算法——蕭炎的成長之路(二),解決算法,一個(gè)專欄就夠了,算法,動(dòng)畫,圖論

最短路徑算法

最短路徑算法是圖論中的一個(gè)重要內(nèi)容,用于解決在圖中找到兩個(gè)頂點(diǎn)之間最短路徑的問題。動(dòng)畫中可能存在各種資源點(diǎn),需要采集這些資源來獲得裝備、藥材等。使用最短路徑算法,可以幫助快速找到距離當(dāng)前位置最近的資源點(diǎn),節(jié)省時(shí)間和精力。

2. 最短路徑算法在斗破蒼穹的應(yīng)用

2.1 迪杰斯特拉算法簡介

迪杰斯特拉算法是一種用于解決帶權(quán)重圖中單源最短路徑問題的經(jīng)典算法。該算法通過逐步確定起始節(jié)點(diǎn)到其他所有節(jié)點(diǎn)之間的最短路徑,并使用一個(gè)距離數(shù)組來記錄每個(gè)節(jié)點(diǎn)的最短距離。

算法的基本思想是從起始節(jié)點(diǎn)開始,首先將起始節(jié)點(diǎn)的最短距離設(shè)為0,然后以遞增的方式依次考慮與起始節(jié)點(diǎn)直接相連的節(jié)點(diǎn),更新這些節(jié)點(diǎn)的最短距離。隨后,選擇一個(gè)距離數(shù)組中最小且未被標(biāo)記過的節(jié)點(diǎn)作為下一個(gè)考慮的節(jié)點(diǎn),并更新與它相連的節(jié)點(diǎn)的最短距離。重復(fù)這個(gè)過程,直到所有節(jié)點(diǎn)都被標(biāo)記過或者沒有可以更新的節(jié)點(diǎn)為止。

迪杰斯特拉算法采用貪心策略,每次選擇離起始節(jié)點(diǎn)最近的節(jié)點(diǎn)進(jìn)行更新,保證了每個(gè)節(jié)點(diǎn)的最短路徑會(huì)被逐步確定,并且每次更新的節(jié)點(diǎn)都是目前已知最短距離的節(jié)點(diǎn)集合中距離起始節(jié)點(diǎn)最近的節(jié)點(diǎn)。

2.2 斗破蒼穹中的最短路徑問題

在斗破蒼穹這樣的游戲中,最短路徑算法可以應(yīng)用于多個(gè)方面,比如:

  1. 資源采集:游戲中可能存在各種資源點(diǎn),玩家需要采集這些資源來獲得裝備、藥材等。使用最短路徑算法,可以幫助玩家快速找到距離當(dāng)前位置最近的資源點(diǎn),節(jié)省時(shí)間和精力。

  2. 怪物刷怪:在斗破蒼穹中,玩家需要擊敗各種怪物進(jìn)行升級(jí)和獲取獎(jiǎng)勵(lì)。最短路徑算法可以幫助玩家找到離自己當(dāng)前位置最近的怪物區(qū)域,提高效率和體驗(yàn)。

  3. 地圖探索:虛擬世界中通常有龐大的地圖,玩家可以利用最短路徑算法規(guī)劃自己的探索路線,以便更好地發(fā)現(xiàn)新的地域和內(nèi)容。

2.3 算法實(shí)現(xiàn)與結(jié)果分析

在斗破蒼穹這樣的游戲中,實(shí)現(xiàn)迪杰斯特拉算法可以通過以下步驟:

  1. 創(chuàng)建一個(gè)用于記錄最短距離的數(shù)組,初始值為無窮大(表示未知)。

  2. 將起始節(jié)點(diǎn)的最短距離設(shè)為0,并將起始節(jié)點(diǎn)加入已訪問節(jié)點(diǎn)集合。

  3. 遍歷與起始節(jié)點(diǎn)直接相連的節(jié)點(diǎn),并更新它們的最短距離。

  4. 從距離數(shù)組中選擇最小且未被標(biāo)記過的節(jié)點(diǎn),將其作為下一個(gè)考慮的節(jié)點(diǎn),并更新與它相連的節(jié)點(diǎn)的最短距離。

  5. 重復(fù)步驟4,直到所有節(jié)點(diǎn)都被標(biāo)記過或者沒有可以更新的節(jié)點(diǎn)為止。
    斗破蒼穹算法——蕭炎的成長之路(二),解決算法,一個(gè)專欄就夠了,算法,動(dòng)畫,圖論

題目

斗破蒼穹中的最短路徑計(jì)算
描述: 在斗破蒼穹中,有一張地圖,地圖上標(biāo)記了一些節(jié)點(diǎn)和它們之間的連接關(guān)系以及對(duì)應(yīng)的權(quán)重。請(qǐng)你設(shè)計(jì)一個(gè)算法,計(jì)算出指定起始節(jié)點(diǎn)到目標(biāo)節(jié)點(diǎn)的最短路徑,并返回該最短路徑的長度。

輸入:

  • 一個(gè)帶權(quán)重的無向連通圖,表示游戲地圖。
  • 起始節(jié)點(diǎn)的編號(hào)。
  • 目標(biāo)節(jié)點(diǎn)的編號(hào)。

輸出:

  • 最短路徑的長度。

示例:

輸入: graph = {
‘A’: [(‘B’, 2), (‘C’, 4)],
‘B’: [(‘A’, 2), (‘C’, 1), (‘D’, 7)],
‘C’: [(‘A’, 4), (‘B’, 1), (‘D’, 3)],
‘D’: [(‘B’, 7), (‘C’, 3)] } start_node = ‘A’ target_node = ‘D’

輸出: 6

解釋: 從節(jié)點(diǎn) A 到節(jié)點(diǎn) D 的最短路徑是 A -> B -> C -> D,路徑長度為 6。

題解

以下是使用C++編寫的解決方案,基于Dijkstra算法來計(jì)算斗破蒼穹中最短路徑的長度。

#include <iostream>
#include <unordered_map>
#include <queue>
#include <limits>

// 定義圖中節(jié)點(diǎn)的類型
typedef char Node;

// 定義連接關(guān)系和權(quán)重的數(shù)據(jù)結(jié)構(gòu)
struct Edge {
    Node node;
    int weight;
};

// 定義無向連通圖的類型
typedef std::unordered_map<Node, std::vector<Edge>> Graph;

// 定義最短路徑的長度的數(shù)據(jù)結(jié)構(gòu)
typedef std::unordered_map<Node, int> ShortestPathLengths;

// 計(jì)算最短路徑的長度
int calculateShortestPathLength(const Graph& graph, const Node& startNode, const Node& targetNode) {
    // 創(chuàng)建一個(gè)優(yōu)先隊(duì)列來選擇下一個(gè)最近節(jié)點(diǎn)
    std::priority_queue<std::pair<int, Node>, std::vector<std::pair<int, Node>>, std::greater<std::pair<int, Node>>> pq;

    // 創(chuàng)建一個(gè)用于存儲(chǔ)最短路徑長度的哈希表,并初始化為無窮大
    ShortestPathLengths shortestPaths;
    for (const auto& pair : graph) {
        shortestPaths[pair.first] = std::numeric_limits<int>::max();
    }

    // 設(shè)置起始節(jié)點(diǎn)的最短路徑長度為0,并將其加入到優(yōu)先隊(duì)列中
    shortestPaths[startNode] = 0;
    pq.push(std::make_pair(0, startNode));

    while (!pq.empty()) {
        // 取出當(dāng)前最近節(jié)點(diǎn)
        Node currentNode = pq.top().second;
        int currentDistance = pq.top().first;
        pq.pop();

        // 如果當(dāng)前節(jié)點(diǎn)已經(jīng)被訪問過,則跳過
        if (currentDistance > shortestPaths[currentNode]) {
            continue;
        }

        // 遍歷當(dāng)前節(jié)點(diǎn)的鄰居節(jié)點(diǎn)
        for (const Edge& edge : graph.at(currentNode)) {
            Node neighborNode = edge.node;
            int weight = edge.weight;

            // 計(jì)算從起始節(jié)點(diǎn)到鄰居節(jié)點(diǎn)的新路徑長度
            int newDistance = currentDistance + weight;

            // 如果新路徑長度比當(dāng)前記錄的最短路徑長度小,則更新最短路徑長度,并將鄰居節(jié)點(diǎn)加入到優(yōu)先隊(duì)列中
            if (newDistance < shortestPaths[neighborNode]) {
                shortestPaths[neighborNode] = newDistance;
                pq.push(std::make_pair(newDistance, neighborNode));
            }
        }
    }

    // 返回目標(biāo)節(jié)點(diǎn)的最短路徑長度
    return shortestPaths[targetNode];
}

int main() {
    // 構(gòu)建示例中的圖
    Graph graph = {
        {'A', {{'B', 2}, {'C', 4}}},
        {'B', {{'A', 2}, {'C', 1}, {'D', 7}}},
        {'C', {{'A', 4}, {'B', 1}, {'D', 3}}},
        {'D', {{'B', 7}, {'C', 3}}}
    };

    // 指定起始節(jié)點(diǎn)和目標(biāo)節(jié)點(diǎn)
    Node startNode = 'A';
    Node targetNode = 'D';

    // 計(jì)算最短路徑的長度
    int shortestPathLength = calculateShortestPathLength(graph, startNode, targetNode);

    // 輸出結(jié)果
    std::cout << "最短路徑的長度: " << shortestPathLength << std::endl;

    return 0;
}

以上是使用C++編寫的斗破蒼穹最短路徑計(jì)算的解決方案。該代碼實(shí)現(xiàn)了Dijkstra算法來計(jì)算給定起始節(jié)點(diǎn)到目標(biāo)節(jié)點(diǎn)的最短路徑長度。首先,通過構(gòu)建一個(gè)無向連通圖(Graph)來表示游戲地圖,并定義了節(jié)點(diǎn)(Node)和連接關(guān)系的數(shù)據(jù)結(jié)構(gòu)。然后,使用優(yōu)先隊(duì)列來選擇下一個(gè)最近的節(jié)點(diǎn),并使用哈希表來記錄每個(gè)節(jié)點(diǎn)的最短路徑長度。在計(jì)算過程中,采用貪心策略,不斷更新鄰居節(jié)點(diǎn)的最短路徑長度,直到到達(dá)目標(biāo)節(jié)點(diǎn)或遍歷完所有可達(dá)的節(jié)點(diǎn)。最后,輸出最短路徑的長度。

結(jié)語

總之,雖然蕭炎的故事并非真實(shí)存在,但我們可以將他的歷與圖論的思想相聯(lián)系,以更好地理解和應(yīng)用圖論算法。文章來源地址http://www.zghlxwxcb.cn/news/detail-622499.html

到了這里,關(guān)于斗破蒼穹算法——蕭炎的成長之路(二)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 一個(gè)女程序員的成長之路

    一個(gè)女程序員的成長之路

    2013年大學(xué)畢業(yè)了,帶著迷茫與好玩,我還年輕的心態(tài),開始在鄭州尋覓工作機(jī)會(huì),最后很榮幸的在一家小公司入職了,工作的內(nèi)容是給種植大棚的用戶打電話,推銷農(nóng)藥。每天就是在網(wǎng)上各種農(nóng)業(yè)平臺(tái)上面找號(hào)碼,打電話, 一天撥打電話的在四十個(gè)左右,卻累的都說不出話

    2024年02月14日
    瀏覽(23)
  • AI繪畫StableDiffusion美女實(shí)操教程:斗破蒼穹-小醫(yī)仙-天毒女(附高清圖下載)

    AI繪畫StableDiffusion美女實(shí)操教程:斗破蒼穹-小醫(yī)仙-天毒女(附高清圖下載)

    小醫(yī)仙,是天蠶土豆所著玄幻小說《斗破蒼穹》([1])及其衍生作品中的角色,身負(fù)厄難毒體,食毒修煉,萬毒不侵,通體毒氣。這種會(huì)無意識(shí)地殺死別人的體質(zhì)讓天性善良的小醫(yī)仙成為人憎鬼厭的天毒女,在蕭炎多次幫助下得以控制。 出圖效果展示: 今天我們就來一波實(shí)操,

    2024年01月16日
    瀏覽(34)
  • 告別過去,擁抱未來:一個(gè)Java開發(fā)者的成長之路

    時(shí)光飛逝,不知不覺已經(jīng)到了大四畢業(yè)的時(shí)候?;仡欉@四年的學(xué)生生涯,Java開發(fā)是讓我最為熱愛和投入的一部分。在這里,我想和大家分享我在Java開發(fā)方面的收獲、經(jīng)驗(yàn)和感悟,同時(shí)也向過去的自己告別,迎接未來的挑戰(zhàn)。 在大一的時(shí)候,我們學(xué)習(xí)了Java編程基礎(chǔ),當(dāng)時(shí)我并

    2024年02月08日
    瀏覽(23)
  • 想要精通算法和SQL的成長之路 - 填充書架

    想要精通算法和SQL的成長之路 - 填充書架

    想要精通算法和SQL的成長之路 - 系列導(dǎo)航 原題鏈接 題目中有一個(gè)值得注意的點(diǎn)就是: 需要按照書本順序擺放。 每一層當(dāng)中,只要厚度不夠了,當(dāng)前層最高的那一本書籍就視為本層的高度。 那么我們假設(shè) dp[i] : 代表從 book[0] 擺到 book[i] 的時(shí)書架的最小高度。 假設(shè)最后一層

    2024年02月07日
    瀏覽(15)
  • 想要精通算法和SQL的成長之路 - 相交鏈表

    想要精通算法和SQL的成長之路 - 相交鏈表

    想要精通算法和SQL的成長之路 - 系列導(dǎo)航 原題鏈接 思路如下: 1.我們假設(shè) headA 鏈表的長度為 a 。 headB 鏈表的長度為 b 。兩個(gè)鏈表的公共部分長度為 c (如果存在),公共節(jié)點(diǎn)為 node 。 頭結(jié)點(diǎn) headA 到 node 前,有 a-c 個(gè)節(jié)點(diǎn)。 頭結(jié)點(diǎn) headB 到 node 前,有 b-c 個(gè)節(jié)點(diǎn)。 2.那么我們

    2024年02月07日
    瀏覽(19)
  • 想要精通算法和SQL的成長之路 - 找到最終的安全狀態(tài)

    想要精通算法和SQL的成長之路 - 找到最終的安全狀態(tài)

    想要精通算法和SQL的成長之路 - 系列導(dǎo)航 原題鏈接 我們從題目中可以看出來: 出度為0的,就是終端節(jié)點(diǎn)。 如果存在路徑通向終端節(jié)點(diǎn),那么該節(jié)點(diǎn)就是安全節(jié)點(diǎn)。那么終端節(jié)點(diǎn)本身也可以作為安全節(jié)點(diǎn)。 而題目要求我們返回的是安全節(jié)點(diǎn)。 滿足題目要求的節(jié)點(diǎn),一定是和

    2024年02月06日
    瀏覽(20)
  • 想要精通算法和SQL的成長之路 - 課程表II

    想要精通算法和SQL的成長之路 - 課程表II

    想要精通算法和SQL的成長之路 - 系列導(dǎo)航 原題鏈接 核心知識(shí): 拓?fù)渑判蚴菍iT 應(yīng)用于有向圖的算法。 BFS 的寫法就叫拓?fù)渑判?,核心就是?讓入度為0的節(jié)點(diǎn)入隊(duì)。 拓?fù)渑判虻?結(jié)果不唯一。 同時(shí)拓?fù)渑判蛴幸粋€(gè)重要的功能: 能夠檢測有向圖中是否存在環(huán)。 我們先分析一下

    2024年02月09日
    瀏覽(18)
  • 想要精通算法和SQL的成長之路 - 滑動(dòng)窗口和大小根堆

    想要精通算法和SQL的成長之路 - 滑動(dòng)窗口和大小根堆

    想要精通算法和SQL的成長之路 - 系列導(dǎo)航 先來說下大小根堆是什么: 大根堆:棧頂元素最大(上圖左側(cè)部分),棧底至棧頂元素值遞增。 小根堆:棧頂元素最?。ㄉ蠄D右側(cè)部分),棧底至棧頂元素值遞減。 在 Java 當(dāng)中,可以用什么來表示大小根堆? 小根堆: 大根堆: 大小

    2024年02月07日
    瀏覽(21)
  • 想要精通算法和SQL的成長之路 - 分割數(shù)組的最大值

    想要精通算法和SQL的成長之路 - 分割數(shù)組的最大值

    想要精通算法和SQL的成長之路 - 系列導(dǎo)航 原題鏈接 首先面對(duì)這個(gè)題目,我們可以捕獲幾個(gè): 非負(fù)整數(shù)。 非空連續(xù)子數(shù)組。 那么我們假設(shè)分割后的子數(shù)組,和的最大值是 M ,對(duì)應(yīng)分割的子數(shù)組個(gè)數(shù)為 N 。他們之間必然存在以下關(guān)系: 分割的子數(shù)組個(gè)數(shù) N 越多,對(duì)應(yīng)的

    2024年02月07日
    瀏覽(30)
  • 想要精通算法和SQL的成長之路 - 二叉樹的序列化和反序列化問題

    想要精通算法和SQL的成長之路 - 二叉樹的序列化和反序列化問題

    想要精通算法和SQL的成長之路 - 系列導(dǎo)航 二叉樹的層序遍歷 像這種從上至下并且按層打印的,可以稱之為 二叉樹的廣度優(yōu)先搜索( BFS ) 。而這類算法往往借助 隊(duì)列的一個(gè)先入先出特性 來實(shí)現(xiàn)。 那么有這么幾個(gè)步驟: 1.特殊處理還有初始化動(dòng)作。 2. BFS 循環(huán): 最終完整代

    2024年02月07日
    瀏覽(31)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包