最小總和問題(動態規劃演算法)
#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;
}
相關文章
- (動態規劃)最小分糖果問題動態規劃
- 動態規劃6:臺階問題和矩陣最小路徑問題動態規劃矩陣
- “插花問題”的動態規劃法演算法動態規劃演算法
- 插花問題的“動態規劃法”演算法動態規劃演算法
- 01揹包問題理解動態規劃演算法動態規劃演算法
- 演算法之動態規劃總結演算法動態規劃
- 動態規劃之子序列問題動態規劃
- 揹包問題----動態規劃動態規劃
- 【動態規劃】揹包問題動態規劃
- 整數劃分問題(動態規劃)動態規劃
- LeetCode總結,動態規劃問題小結LeetCode動態規劃
- 【演算法】動態規劃-優化編輯器問題演算法動態規劃優化
- 動態規劃 01揹包問題動態規劃
- 找零問題與動態規劃動態規劃
- 【動態規劃】01揹包問題動態規劃
- 動態規劃-01揹包問題動態規劃
- 動態規劃,股票問題留坑動態規劃
- 動態規劃篇——揹包問題動態規劃
- 醜數問題——動態規劃、Java動態規劃Java
- 動態規劃--01揹包問題動態規劃
- 總結 | 動態規劃十問十答動態規劃
- 動態規劃---例題3.最大子段和問題動態規劃
- 動態規劃 總結動態規劃
- 動態規劃9:變態跳臺問題動態規劃
- 動態規劃分類題目總結動態規劃
- 動態規劃演算法動態規劃演算法
- 演算法_動態規劃演算法動態規劃
- 演算法-動態規劃演算法動態規劃
- 揹包問題演算法全解析:動態規劃和貪心演算法詳解演算法動態規劃
- 【動態規劃】01揹包問題【續】動態規劃
- 動態規劃5:找零錢問題動態規劃
- 演算法系列-動態規劃(1):初識動態規劃演算法動態規劃
- 動態規劃--三角形最小路徑和動態規劃
- 演算法---貪心演算法和動態規劃演算法動態規劃
- 好題——動態規劃動態規劃
- 動態規劃專題動態規劃
- 動態規劃題單動態規劃
- [LeetCode] 動態規劃題型總結LeetCode動態規劃