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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

7-8 数字三角形 (31 分)(思路+详解+动态规划)Come Baby!!!!!!!!!!!

發布時間:2023/12/4 编程问答 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 7-8 数字三角形 (31 分)(思路+详解+动态规划)Come Baby!!!!!!!!!!! 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一:題目

觀察下面的數字金字塔。寫一個程序查找從最高點到底部任意處結束的路徑,使路徑經過數字的和最大。每一步可以從當前點走到左下方的點也可以到達右下方的點。

在上面的樣例中,從13到8到26到15到24的路徑產生了最大的和86。
輸入格式:
第一個行包含R(1≤ R≤1000),表示行的數目。

后面每行為這個數字金字塔特定行包含的整數。

所有的被供應的整數是非負的且不大于100。

輸出格式:
單獨的一行,包含那個可能得到的最大的和。

輸入樣例:

5 13 11 8 12 7 26 6 14 15 8 12 7 13 24 11

輸出樣例:

86

二:思路

思路:
1.分析動態規劃:
本題當中的求取最終結果依然是跳躍性的,也就是后面的選擇有可能要比前面好
故判定為動態規劃
2.本題當中可以將輸入的數據輸入二維數組當中,將其放置在下三角形當中
3.通過分析數據 :我們可以得出一個遞推方程
就是每次和其上方和左上方所對應的數相加,選取較大的數填寫在網格當中
m[i][j] = max(m[i-1][j]+m[i][j],m[i-1][j-1]+m[i][j])

4.然后就可以在最后一行選取一個較大的結果就是路徑和最大的值
5.本題的遞推方程思路和最長公共子序列類似,都是建好網格后找遞推方程

三:上碼

/**思路:1.分析動態規劃:本題當中的求取最終結果依然是跳躍性的,也就是后面的選擇有可能要比前面好故判定為動態規劃2.本題當中可以將輸入的數據輸入二維數組當中,將其放置在下三角形當中3.通過分析數據 :我們可以得出一個遞推方程就是每次和其上方和左上方所對應的數相加,選取較大的數填寫在網格當中m[i][j] = max(m[i-1][j]+m[i][j],m[i-1][j-1]+m[i][j])4.然后就可以在最后一行選取一個較大的結果就是路徑和最大的值 */ #include<bits/stdc++.h> using namespace std;int main(){int N;cin >> N;int a[N+1][N+1];//初始化數組a (升級新技能 不在寫for循環進行初始化了)memset(a,0,sizeof(a)); for(int i = 1; i <= N; i++){for(int j = 1; j <= i; j++){cin >> a[i][j];}}// for(int i = 0; i <= N; i++){ // for(int j = 0; j <= N; j++){ // cout << a[i][j] << ' '; // } // cout << endl; // }//開始建立網格和更新for(int i = 1; i <= N; i++){for(int j = 1; j <= N; j++){a[i][j] = max(a[i][j] + a[i-1][j],a[i][j]+a[i-1][j-1]);}} int maxx = 0;for(int j = 1; j <= N; j++){maxx = max(maxx,a[N][j]);}cout << maxx;}

四:總結

可能是思路相似,所以花了很短時間做出來了,許久沒有會因為一道題開心過了,我也本想想在家一樣天天刷一道題,寫題解,但在學校,也就晚上寫會兒算法題到10點就回宿舍了,不能像在一樣,想做到幾點就做到幾點,而且算法題確實很難理解,但是其代碼,很簡潔,讓人又愛又恨,還有就是確實很花時間,可能我太菜了,但菜雞正在成長,我們共勉,共同加油。我也有不會做的題,我的學習順序是先分析數據,大概什么摸樣想清楚后,如果寫不出碼,就先看視頻(去B站上),然后,再看一篇優質博客,把不會的學會 ,可能一篇博客其中有大佬用的東西,你沒見過,沒關系,那就去學,把不會的學會綜合到一塊,我們會的不僅僅是一道題,這就好比分治算法,把一個大問題轉化成一些小問題,再對小問題進行求解,最后綜合小問題的解就是大問題的解,但我們在學習過程中我們不僅僅回了這道題,還學會了一些其他東西,下次可能就會用上
,本題當中的初始化數組memset(a,0,sizeof(a)),我以后會用上的,還有求取最大值直接調用一個max,不去寫一個for循環+一個if判斷了,這是我前幾天寫石子合并當中學的,今天用到后,我就直接寫出來了。可能是心情好點,一下說了這么多,
還是老樣子,加油陌生人!我們共同進步!!!!!!!!!!!!!!!!!

總結

以上是生活随笔為你收集整理的7-8 数字三角形 (31 分)(思路+详解+动态规划)Come Baby!!!!!!!!!!!的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。