【动态规划】路径dp:蓝桥2020: 数字三角形_动态规划

【动态规划】路径dp:蓝桥2020: 数字三角形_蓝桥杯_02

 

 【动态规划笔记】:POJ 3176 树塔_m0_52043808的博客

结果输出

dp[n][n/2+1]如果n是奇数

max(dp[n][n/2],dp[n][n/2+1])如果n是偶数

#include <iostream>
#include<cstring>
#include<algorithm>
using namespace std;
int main()
{
  int n;
  cin>>n;
  int G[101][101];
  memset(G,0,sizeof(G));
  int dp[101][101];
  memset(dp,0,sizeof(dp));
  for(int i=1;i<=n;i++){
    for(int j=1;j<=i;j++){
      cin>>G[i][j];
    }
  }
  dp[1][1]=G[1][1];
  for(int i=1;i<=n;i++){
    for(int j=1;j<=i;j++){
      dp[i][j]=G[i][j]+max(dp[i-1][j],dp[i-1][j-1]);
    }
  }
  if(n%2==1){
    cout<<dp[n][(n+1)/2];
  }
  else{
    cout<<max(dp[n][n/2],dp[n][n/2+1]);
  }

  return 0;
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.