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

動(dòng)態(tài)規(guī)劃解“不同路徑問題”(所有路徑、有障礙物時(shí)的所有路徑)

這篇具有很好參考價(jià)值的文章主要介紹了動(dòng)態(tài)規(guī)劃解“不同路徑問題”(所有路徑、有障礙物時(shí)的所有路徑)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

題目1:不同路徑(求到達(dá)右下角的所有路徑)

一個(gè)機(jī)器人位于一個(gè) m x n 網(wǎng)格的左上角 (起始點(diǎn)在下圖中標(biāo)記為 “Start” )。

機(jī)器人每次只能向下或者向右移動(dòng)一步。機(jī)器人試圖達(dá)到網(wǎng)格的右下角(在下圖中標(biāo)記為 “Finish” )。

問總共有多少條不同的路徑?

動(dòng)態(tài)規(guī)劃解“不同路徑問題”(所有路徑、有障礙物時(shí)的所有路徑),算法,leetcode,c++,矩陣,動(dòng)態(tài)規(guī)劃?

?解題思路

1.dp[i][j]代表從0,0走到i,j的位置有多少條路徑

2.矩陣的左邊界和上邊界只能是一種走法,要么只能向下走,要么只能向右走

dp[i][0]=1;dp[0][i]=1;

3.到達(dá)矩陣其余元素的所有路徑可以從上一個(gè)元素得來,也可以從左一個(gè)元素得來,這里我們求的是到達(dá)i,j位置的所有路徑之和,所以我們只需要將上邊和左邊的路徑相加即可

dp[i][j]=dp[i][j-1]+dp[i-1][j];

源代碼如下:文章來源地址http://www.zghlxwxcb.cn/news/detail-625764.html

class Solution {
public:
? ? int uniquePaths(int m, int n) {
? ? ? ? vector<vector<int>> dp(m,vector<int>(n));//二維數(shù)組dp
? ? ? ? //矩陣左邊界只有一種走法,只能向下走
? ? ? ? for(int i=0;i<m;i++)
? ? ? ? {
? ? ? ? ? ? dp[i][0]=1;
? ? ? ? }
? ? ? ? //矩陣上邊界只有一種走法,只能向右走
? ? ? ? for(int i=0;i<n;i++)
? ? ? ? {
? ? ? ? ? ? dp[0][i]=1;
? ? ? ? }
? ? ? ? //dp[i][j]代表從0,0走到i,j的位置有多少條路徑
? ? ? ? //dp[i][j]要么是從上一個(gè)元素向下走得來,要么是左邊一個(gè)元素向右走得來
? ? ? ? //所以dp[i][j]=dp[i][j-1]+dp[i-1][j];
? ? ? ? for(int i=1;i<m;i++)
? ? ? ? {
? ? ? ? ? ? for(int j=1;j<n;j++)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? dp[i][j]=dp[i][j-1]+dp[i-1][j];
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? return dp[m-1][n-1];
? ? }
};

題目2:不同路徑(有障礙物)

一個(gè)機(jī)器人位于一個(gè) m x n 網(wǎng)格的左上角 (起始點(diǎn)在下圖中標(biāo)記為 “Start” )。

機(jī)器人每次只能向下或者向右移動(dòng)一步。機(jī)器人試圖達(dá)到網(wǎng)格的右下角(在下圖中標(biāo)記為 “Finish”)。

現(xiàn)在考慮網(wǎng)格中有障礙物。那么從左上角到右下角將會(huì)有多少條不同的路徑?

網(wǎng)格中的障礙物和空位置分別用 1 和 0 來表示。

動(dòng)態(tài)規(guī)劃解“不同路徑問題”(所有路徑、有障礙物時(shí)的所有路徑),算法,leetcode,c++,矩陣,動(dòng)態(tài)規(guī)劃

?輸入:obstacleGrid = [[0,0,0],[0,1,0],[0,0,0]]
輸出:2
解釋:3x3 網(wǎng)格的正中間有一個(gè)障礙物。
從左上角到右下角一共有 2 條不同的路徑

解題思路:

1.左邊界和上邊界如果遇到障礙,則障礙后的地方到達(dá)路徑都為0

2.矩陣中其余元素判斷時(shí),如果是障礙物,dp為0

3.動(dòng)態(tài)規(guī)劃方程:dp[i][j]=dp[i-1][j]+dp[i][j-1];

源代碼如下:

class Solution {
public:
    int uniquePathsWithObstacles(vector<vector<int>>& obstacleGrid) {
        int m=obstacleGrid.size();//計(jì)算矩陣的行
        int n=obstacleGrid[0].size();//計(jì)算矩陣的列
        vector<vector<int>> dp(m,vector<int>(n,0));//定義動(dòng)態(tài)規(guī)劃的二維數(shù)組,初始化為0
        //如果矩陣中第一行第一列不是障礙物,則dp[0][0]=1
        if(obstacleGrid[0][0]!=1) dp[0][0]=1;
        //左邊界(每個(gè)元素只能由上邊元素得來)
        for(int i=1;i<m;i++)
        {
            //遇到障礙物就跳過,此時(shí)dp[i][0]=0
            if(obstacleGrid[i][0]==1)
            {
                continue;
            }
            dp[i][0]=dp[i-1][0];//其他情況等于上邊元素的dp,因?yàn)橹荒苡缮线呉粋€(gè)元素得來
        }
        //上邊界,同理
        for(int i=1;i<n;i++)
        {
            if(obstacleGrid[0][i]==1)
            {
                continue;
            }
            dp[0][i]=dp[0][i-1];
        }
        //非左邊界和上邊界的元素
        for(int i=1;i<m;i++)
        {
            for(int j=1;j<n;j++)
            {
                //跳過障礙物,只有在不是障礙物的情況才更新dp的值
                //動(dòng)態(tài)規(guī)劃方程:dp[i][j]=dp[i-1][j]+dp[i][j-1]
                //當(dāng)前位置的走法=上邊元素的所有路徑+左邊元素的所有路徑
                if(obstacleGrid[i][j]!=1) 
                {
                    dp[i][j]=dp[i-1][j]+dp[i][j-1];
                }
            }
        }
        //返回右下角元素
        return dp[m-1][n-1];
    }
};

到了這里,關(guān)于動(dòng)態(tài)規(guī)劃解“不同路徑問題”(所有路徑、有障礙物時(shí)的所有路徑)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(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)文章

  • Apollo規(guī)劃決策算法仿真調(diào)試(5):動(dòng)態(tài)障礙物繞行

    Apollo規(guī)劃決策算法仿真調(diào)試(5):動(dòng)態(tài)障礙物繞行

    Apollo (阿波羅)是一個(gè)開放的、完整的、安全的平臺(tái),將幫助汽車行業(yè)及自動(dòng)駕駛領(lǐng)域的合作伙伴結(jié)合車輛和硬件系統(tǒng),快速搭建一套屬于自己的自動(dòng)駕駛系統(tǒng)。Apollo 自動(dòng)駕駛開放平臺(tái)為開發(fā)者提供了豐富的車輛、硬件選擇,強(qiáng)大的環(huán)境感知、高精定位、路徑規(guī)劃、車輛控制等

    2024年02月09日
    瀏覽(53)
  • 【路徑規(guī)劃】粒子群算法求解機(jī)器人障礙物環(huán)境的Voronoi圖路徑規(guī)劃【含GUI Matlab源碼 3748期】

    【路徑規(guī)劃】粒子群算法求解機(jī)器人障礙物環(huán)境的Voronoi圖路徑規(guī)劃【含GUI Matlab源碼 3748期】

    粒子群算法(Particle Swarm Optimization, PSO)可以用于柵格地圖上機(jī)器人的最短路徑規(guī)劃。在這種問題中,柵格地圖被劃分為離散的單元格,每個(gè)單元格可以是阻擋或可通過的區(qū)域。機(jī)器人需要從起始位置移動(dòng)到目標(biāo)位置,避免碰到阻擋。 PSO算法中,通過使用一群粒子來搜索最優(yōu)

    2024年01月17日
    瀏覽(96)
  • Python 動(dòng)態(tài)規(guī)劃 實(shí)現(xiàn)機(jī)器人躲避障礙物獲取最短路徑

    要設(shè)計(jì)一種算法來尋找機(jī)器人從左上角移動(dòng)到右下角的路徑,可以使用動(dòng)態(tài)規(guī)劃來解決這個(gè)問題。下面是一種可能的算法: 創(chuàng)建一個(gè)處理機(jī)器人運(yùn)動(dòng)的函數(shù) find_path ,函數(shù)接受一個(gè)矩陣 grid 作為參數(shù),用于表示機(jī)器人移動(dòng)的網(wǎng)格環(huán)境,該矩陣一個(gè)由 0 和 1 組成的二位列表,其

    2024年04月09日
    瀏覽(29)
  • 百度Apollo規(guī)劃算法——OBB障礙物檢測(cè)代碼解析

    百度Apollo規(guī)劃算法——OBB障礙物檢測(cè)代碼解析

    本文主要分析Apollo代碼中函數(shù) bool Box::HasOverlap(const Box2d box) const {} 的數(shù)學(xué)原理。 在閱讀此部分代碼時(shí),第一遍沒看懂return的一堆什么意思,百度之后說是采用OBB原理,所以就去了解下OBB原理,回來看還是沒太明白,直到看到了博客[1],通過博主的圖解才有了進(jìn)一步的了解,但

    2024年02月14日
    瀏覽(23)
  • ros機(jī)器人在navigation下導(dǎo)航costmap_2d動(dòng)態(tài)層(障礙物層)障礙物無法及時(shí)消除的情況解決辦法

    ros機(jī)器人在navigation下導(dǎo)航costmap_2d動(dòng)態(tài)層(障礙物層)障礙物無法及時(shí)消除的情況解決辦法

    設(shè)備 杉川-3a激光雷達(dá) win10筆記本電腦 ubuntu18.04 ros-melodic 問題 ros機(jī)器人在move_base下導(dǎo)航,有靜態(tài)圖層與動(dòng)態(tài)圖層,靜態(tài)圖層顯示之前已經(jīng)建立好的地圖,而動(dòng)態(tài)層顯示現(xiàn)在激光雷達(dá)實(shí)時(shí)掃描到的障礙物。 假設(shè)機(jī)器人雷達(dá)最大范圍為8m,在某一時(shí)刻,以機(jī)器人為原點(diǎn),在機(jī)器人

    2024年02月06日
    瀏覽(24)
  • ROS從入門到精通2-7:Gazebo仿真之動(dòng)態(tài)生成障礙物

    本專欄旨在通過對(duì)ROS的系統(tǒng)學(xué)習(xí),掌握ROS底層基本分布式原理,并具有機(jī)器人建模和應(yīng)用ROS進(jìn)行實(shí)際項(xiàng)目的開發(fā)和調(diào)試的工程能力。 ??詳情:《ROS從入門到精通》 動(dòng)態(tài)生成障礙物在機(jī)器人工程領(lǐng)域應(yīng)用非常廣泛,例如 機(jī)器人導(dǎo)航與路徑規(guī)劃 :動(dòng)態(tài)生成障礙物可以用于評(píng)估

    2024年02月11日
    瀏覽(229)
  • 從零開始的三維激光雷達(dá)SLAM教程第二講(搭建Gazebo仿真環(huán)境,并添加動(dòng)態(tài)障礙物)

    從零開始的三維激光雷達(dá)SLAM教程第二講(搭建Gazebo仿真環(huán)境,并添加動(dòng)態(tài)障礙物)

    畢業(yè)設(shè)計(jì)打算做三維激光SLAM,記錄一些學(xué)習(xí)歷程,也給后面人一點(diǎn)幫助。本教程不涉及SLAM基本概念(如果沒有自行補(bǔ)充),主要包含以下幾部分內(nèi)容。 搭建激光SLAM的運(yùn)行環(huán)境并運(yùn)行數(shù)據(jù)集 在Gazebo中構(gòu)建仿真地圖并添加動(dòng)態(tài)障礙物,使用仿真小車采集激光數(shù)據(jù)。 A-LOAM詳解,

    2024年02月01日
    瀏覽(52)
  • 【論文閱讀】點(diǎn)云地圖動(dòng)態(tài)障礙物去除基準(zhǔn) A Dynamic Points Removal Benchmark in Point Cloud Maps

    【論文閱讀】點(diǎn)云地圖動(dòng)態(tài)障礙物去除基準(zhǔn) A Dynamic Points Removal Benchmark in Point Cloud Maps

    終于一次輪到了講自己的paper了 hahaha,寫個(gè)中文的解讀放在博客方便大家討論 Title Picture Reference and prenotes paper: https://arxiv.org/abs/2307.07260 code: https://github.com/KTH-RPL/DynamicMap_Benchmark b站:地圖動(dòng)態(tài)障礙物去除總結(jié) ITSC’23: A Dynamic Points Removal Benchmark in Point Cloud Maps 主要就是2019年末

    2024年02月06日
    瀏覽(27)
  • Fluent案例1- 空氣流經(jīng)障礙物-3D模擬

    Fluent案例1- 空氣流經(jīng)障礙物-3D模擬

    目錄 1. 構(gòu)建幾何模型 2. 生成網(wǎng)格? 2.1 生成六面體網(wǎng)格 2.2 生成四面體網(wǎng)格 2.3 生成多面體網(wǎng)格 3. 模擬設(shè)置 4. 后處理 4.1 查看不同網(wǎng)格下的壓力與速度分布 4.2??查看wall上壓力分布 5. 總結(jié)? 前面的博客介紹了2D的模擬操作步驟,接下來進(jìn)行3D的建模與計(jì)算 將之前建好的2D模型導(dǎo)

    2024年02月11日
    瀏覽(48)
  • unity-障礙物和空氣墻的設(shè)置

    unity-障礙物和空氣墻的設(shè)置

    建個(gè)游戲?qū)ο螅缓蠼o他添加2d碰撞盒子屬性 把它放到相機(jī)下面,讓它成為相機(jī)的所屬的子組,跟隨相機(jī)一起移動(dòng)通過。 創(chuàng)建新的標(biāo)簽便于碰撞確認(rèn)操作。 ** ** 判斷我們游戲操控的物體是否在空氣墻上: 額外 : 可以被跨越一類的物體的判斷(地刺一類) ? 其實(shí)步驟都和上

    2024年02月13日
    瀏覽(131)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包