日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

python 动态规划 数塔_数塔问题,简单的动态规划算法

發(fā)布時間:2023/12/10 python 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python 动态规划 数塔_数塔问题,简单的动态规划算法 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

/*

數(shù)塔問題:

9

12 15

10 6 8

2 18 9 5

19 7 10 4 16

有形如圖所示的數(shù)塔,從頂部出發(fā),在每一結(jié)點(diǎn)可以選擇向左走或是向右走,

一直走到底層,要求找出一條路徑,使路徑上的值最大。

這道題如果用枚舉法,在數(shù)塔層數(shù)稍大的情況下(如40),則需要列舉出的路徑條數(shù)將是一個非常龐大的數(shù)目。

如果用貪心法又往往得不到最優(yōu)解。

在用動態(tài)規(guī)劃考慮數(shù)塔問題時可以自頂向下的分析,自底向上的計算。

從頂點(diǎn)出發(fā)時到底向左走還是向右走應(yīng)取決于是從左走能取到最大值還是從右走能取到最大值,

只要左右兩道路徑上的最大值求出來了才能作出決策。

同樣的道理下一層的走向又要取決于再下一層上的最大值是否已經(jīng)求出才能決策。

這樣一層一層推下去,直到倒數(shù)第二層時就非常明了。

如數(shù)字2,只要選擇它下面較大值的結(jié)點(diǎn)19前進(jìn)就可以了。

所以實(shí)際求解時,可從底層開始,層層遞進(jìn),最后得到最大值。

總結(jié):此題是最為基礎(chǔ)的動態(tài)規(guī)劃題目,階段、狀態(tài)的劃分一目了然。

而決策的記錄,充分體現(xiàn)了動態(tài)規(guī)劃即“記憶化搜索”的本質(zhì)。

*/

#include [i]

#define MAX 20

using namespace std;

int main()

{

cout > n;

int a[MAX+1][MAX+1][3];? ? ? ? //[0]用來存數(shù),[1]參與運(yùn)算,[2]表示向左(0),還是向右(1)

//輸入數(shù)塔

for(int i = 1; i > a[i][j][0];

a[i][j][1] = a[i][j][0];

a[i][j][2] = 0;

}

}

cout = 1; --i)? ? ? ? //從倒數(shù)第二行開始

{

for(int j=1; j??a[i+1][j+1][1])? ? ? ? //左邊大

{

a[i][j][2] = 0;? ? ? ? ? ? ? ? //選擇左邊

a[i][j][1] += a[i+1][j][1];

}

else? ? ? ? //右邊大

{

a[i][j][2] = 1;? ? ? ? ? ? ? ? //選擇右邊

a[i][j][1] += a[i+1][j+1][1];

}

}

}

//輸出數(shù)塔

for(int i = 1; i??";

j += a[i][j][2];

}

cout

總結(jié)

以上是生活随笔為你收集整理的python 动态规划 数塔_数塔问题,简单的动态规划算法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。