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;
}
相关推荐
梨子串桃子_2 小时前
推荐系统学习笔记 | PyTorch学习笔记
pytorch·笔记·python·学习·算法
夏鹏今天学习了吗2 小时前
【LeetCode热题100(83/100)】最长递增子序列
算法·leetcode·职场和发展
暮色_年华2 小时前
随想 2:对比 linux内核侵入式链表和 STL 非侵入链表
linux·c++·链表
情缘晓梦.2 小时前
C语言指针进阶
java·开发语言·算法
北邮刘老师3 小时前
智能体治理:人工智能时代信息化系统的全新挑战与课题
大数据·人工智能·算法·机器学习·智能体互联网
w-w0w-w3 小时前
C++模板参数与特化全解析
开发语言·c++
AlenTech3 小时前
155. 最小栈 - 力扣(LeetCode)
算法·leetcode·职场和发展
mit6.8244 小时前
正反两次扫描|单调性cut
算法
Yzzz-F4 小时前
牛客小白月赛127 E
算法
大锦终4 小时前
递归回溯综合练习
c++·算法·深度优先