C++ 中以任意第 0 行單元格為起點,以任意第 (N-1) 行單元格為終點的最大路徑和
在本教程中,我們將探討一個程式,以查詢以第 0 行的任意單元格為起點,以第 (N-1) 行的任意單元格為終點的最大路徑和
為此,我們將提供一個矩陣,其可能的移動方式為 (i+1, j)、(i+1, j-1)、(i+1, j+1)。我們的任務是從第 0 個位置開始,移動到最後一行,找出最大和路徑。
示例
#include<bits/stdc++.h>
using namespace std;
#define N 4
//finding maximum sum path
int MaximumPath(int Mat[][N]) {
int result = 0 ;
int dp[N][N+2];
memset(dp, 0, sizeof(dp));
for (int i = 0 ; i < N ; i++)
dp[0][i+1] = Mat[0][i];
for (int i = 1 ; i < N ; i++)
for (int j = 1 ; j <= N ; j++)
dp[i][j] = max(dp[i-1][j-1], max(dp[i-1][j], dp[i-1][j+1])) + Mat[i][j-1] ;
for (int i=0; i<=N; i++)
result = max(result, dp[N-1][i]);
return result ;
}
int main() {
int Mat[4][4] = {
{ 4, 2 , 3 , 4 },
{ 2 , 9 , 1 , 10},
{ 15, 1 , 3 , 0 },
{ 16 ,92, 41, 44 }
};
cout << MaximumPath ( Mat ) <<endl ;
return 0;
}輸出
120
廣告
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 語言
C++
C#
MongoDB
MySQL
JavaScript
PHP