C++ 二维线性DP

二维线性DP 框架代码见下

cpp 复制代码
#include <iostream>
using namespace std;

#define maxn 110

int mat[maxn][maxn];
int dp[maxn][maxn];

int main()
{
  int n;
  cin >> n;
  for(int i=0; i<n; ++i){
    for(int j=0; j<=i; ++j){
      cin >> mat[i][j];
    }
  }
  dp[0][0] = mat[0][0];
  for(int i=0; i<n; ++i){
    dp[i][i] = mat[i][i] + dp[i-1][i-1];
    dp[i][0] = mat[i][0] + dp[i-1][0];
    for(int j=1; j<i; ++j){
      dp[i][j] = mat[i][j] + max(dp[i-1][j-1], dp[i-1][j]);
    }
  }
  int ans = dp[n-1][0];
  for(int i=1; i<n; ++i){
    ans = max(ans, dp[n-1][i]);
  }
  cout << ans << endl;
  // 请在此输入您的代码
  return 0;
}

代码练习1 对应蓝桥云课 云神的路径 代码见下

cpp 复制代码
#include <iostream>
using namespace std;

#define mod 1000000007
#define maxn 1001
char s[maxn][maxn];
int dp[maxn][maxn];


int main()
{
  int n;
  cin >> n;

  for(int i=0; i<n; ++i){
    cin >> s[i];
  }

  for(int i=0; i<n; ++i){
    for(int j=0; j<n; ++j){
      if(s[i][j] == '*'){
        dp[i][j] = 0;
      }else{
        if(i==0 && j ==0){
          dp[i][j] = 1;
        }else if(i == 0){ // 从左边过来
          dp[i][j] = dp[i][j-1];
        }else if(j == 0){ // 从上边过来
          dp[i][j] = dp[i-1][j];
        }else{
          dp[i][j] = (dp[i][j-1]+dp[i-1][j]) % mod;
        }
      }
    }
  }
  cout << dp[n-1][n-1] << endl;
  // 请在此输入您的代码
  return 0;
}

代码 2 对应蓝桥云课 激光样式 代码见下

cpp 复制代码
#include <iostream>
using namespace std;

int dp[31][2];

int main()
{
  dp[1][0] = 1;
  dp[1][1] = 1;
  for(int i=2; i<=30; ++i){
    dp[i][0] = dp[i-1][0] + dp[i-1][1];
    dp[i][1] = dp[i-1][0];

  }
  cout << dp[30][0] + dp[30][1] << endl;
  // 请在此输入您的代码
  return 0;
}
相关推荐
倚楼听风语1 小时前
Kotlin 协程与 suspend 原理详解
java·算法·kotlin
程序员清风1 小时前
双指针与滑动窗口:高效处理连续区间
开发语言·算法
代钦塔拉1 小时前
【C++/Qt 进阶】设计模式系列(2):工厂模式——从游戏角色到披萨店
c++·算法·设计模式
思茂信息1 小时前
电磁仿真学涉及哪些算法?
人工智能·算法·数学建模·matlab·emc·电磁仿真·仿真辐射
糖果豆豆2 小时前
让 AI 自查三遍,它只会把错的说得更像对的——检查的人和被检查的,是同一个
算法·架构
把我格子衫拿来3 小时前
VTK 与 Qt 的 CMake 工程怎么组织?模块、工具链与二进制兼容排错
c++·qt·vtk·cmake·工程实践
总裁余(余登武)3 小时前
K-means算法改进(Python版)
python·算法·kmeans
灯澜忆梦3 小时前
【面向对象编程c++】| 指针与自定义数据类型
开发语言·c++·算法
xxwl5854 小时前
区域赛算法模版第八章---贪心(Greedy)
c++·笔记·学习·算法
雾沉川4 小时前
Visual C++运行库合集 v105.0 安装教程
开发语言·c++·dll