最小總和問題(動態規劃演算法)
#include<iostream>
#include<time.h>
#include<vector>
using namespace std;
int min(int a,int b){//比較大小的函式 **algorithm庫的min函式用不了==
if(a<b){
return a;
}else{
return b;
}
}
int minSum(vector<vector<int> >& triangle){//求最小總和的函式
vector<int> dp(triangle.back());//複製最後一行作為動態規劃陣列的初始值
for(int i=triangle.size()-2;i>=0;i--){//從等邊三角形倒數第二行開始
for(int j=0;j<=i;j++){//取當前數和下一列相鄰兩個數的較小值作為當前數的最小求和
dp[j]=min(dp[j],dp[j+1])+triangle[i][j];
}
}
return dp[0];
}
void main(){
srand((unsigned)time(NULL));
int n;
cout<<"請輸入底邊數的個數:"<<endl;
cin>>n;
vector<vector<int> > triangle(n, vector<int>(n));//定義一個二維vector儲存等邊三角形
for(int i=0;i<n;i++){
for(int j=0;j<=i;j++){
triangle[i][j]=1+rand()%9;
cout<<triangle[i][j]<<" ";
}
cout<<endl;
}
int min=minSum(triangle);
cout<<"最小總和為:"<<min<<endl;
}
相關文章
- 01揹包問題理解動態規劃演算法動態規劃演算法
- 【動態規劃】揹包問題動態規劃
- 揹包問題----動態規劃動態規劃
- 動態規劃之子序列問題動態規劃
- [LeetCode] 動態規劃題型總結LeetCode動態規劃
- 【演算法】動態規劃-優化編輯器問題演算法動態規劃優化
- 找零問題與動態規劃動態規劃
- 醜數問題——動態規劃、Java動態規劃Java
- 動態規劃 01揹包問題動態規劃
- 【動態規劃】01揹包問題動態規劃
- 動態規劃--01揹包問題動態規劃
- 動態規劃篇——揹包問題動態規劃
- 動態規劃-01揹包問題動態規劃
- 動態規劃之股票問題123動態規劃
- 動態規劃,股票問題留坑動態規劃
- 動態規劃---例題3.最大子段和問題動態規劃
- 總結 | 動態規劃十問十答動態規劃
- 揹包問題演算法全解析:動態規劃和貪心演算法詳解演算法動態規劃
- 動態規劃 總結動態規劃
- 動態規劃分類題目總結動態規劃
- Leetcode 題解演算法之動態規劃LeetCode演算法動態規劃
- 演算法-動態規劃演算法動態規劃
- 演算法_動態規劃演算法動態規劃
- 動態規劃演算法動態規劃演算法
- [leetcode初級演算法]動態規劃總結LeetCode演算法動態規劃
- 【動態規劃】01揹包問題【續】動態規劃
- 演算法---貪心演算法和動態規劃演算法動態規劃
- 動態規劃--三角形最小路徑和動態規劃
- 演算法:編輯距離問題(動態規劃,詳細解答)演算法動態規劃
- 演算法系列-動態規劃(1):初識動態規劃演算法動態規劃
- 動態規劃專題動態規劃
- 好題——動態規劃動態規劃
- 動態規劃題單動態規劃
- 前端學習演算法1 :老虎和羊,吃不吃問題(動態規劃入門)前端演算法動態規劃
- leetcode總結——動態規劃LeetCode動態規劃
- 大廠常考動態規劃演算法題動態規劃演算法
- 0-1揹包問題(動態規劃)動態規劃
- 動態規劃,這幾個問題最常見!動態規劃