当前位置: 首页 > wzjs >正文

流量很大的网站贵阳百度seo点击软件

流量很大的网站,贵阳百度seo点击软件,wordpress sqll,ppt模板哪里找动态规划基本操作详解(C) 线性动态规划戳这里 区间动态规划戳这里 状态压缩动态规划戳这里 树状动态规划戳这里 数位动态规划戳这里 树状数组动态规划戳这里 动态规划(Dynamic Programming)是一种通过将复杂问题分解为重叠子问题…

动态规划基本操作详解(C++)

线性动态规划戳这里
区间动态规划戳这里
状态压缩动态规划戳这里
树状动态规划戳这里
数位动态规划戳这里
树状数组动态规划戳这里

动态规划(Dynamic Programming)是一种通过将复杂问题分解为重叠子问题并存储子问题解来优化求解的方法。以下是核心概念和C++实现示例:

核心思想
  1. 重叠子问题:问题可分解为重复计算的子问题
  2. 最优子结构:问题最优解包含子问题最优解
  3. 记忆化存储:避免重复计算,提升效率

基本操作步骤

  1. 定义状态:用数组表示问题状态
  2. 状态转移方程:描述状态间关系
  3. 初始化:设置边界条件
  4. 计算顺序:确定状态计算方向
  5. 空间优化(可选):减少存储使用

经典问题示例(C++实现)

1. 斐波那契数列
#include <iostream>
#include <vector>
using namespace std;int fib(int n) {if (n <= 1) return n;vector<int> dp(n+1);dp[0] = 0; dp[1] = 1;for (int i = 2; i <= n; i++) {dp[i] = dp[i-1] + dp[i-2];}return dp[n];
}
// 空间优化版
int fib_optimized(int n) {if (n <= 1) return n;int a = 0, b = 1;for (int i = 2; i <= n; i++) {int c = a + b;a = b;b = c;}return b;
}
2. 零一背包问题
int knapsack(int W, vector<int>& wt, vector<int>& val) {int n = wt.size();vector<vector<int>> dp(n+1, vector<int>(W+1, 0));for (int i = 1; i <= n; i++) {for (int w = 1; w <= W; w++) {if (wt[i-1] > w) {dp[i][w] = dp[i-1][w];} else {dp[i][w] = max(dp[i-1][w], val[i-1] + dp[i-1][w - wt[i-1]]);}}}return dp[n][W];
}
3. 最长公共子序列(LCS)
int lcs(string X, string Y) {int m = X.length(), n = Y.length();vector<vector<int>> dp(m+1, vector<int>(n+1, 0));for (int i = 1; i <= m; i++) {for (int j = 1; j <= n; j++) {if (X[i-1] == Y[j-1]) {dp[i][j] = dp[i-1][j-1] + 1;} else {dp[i][j] = max(dp[i-1][j], dp[i][j-1]);}}}return dp[m][n];
}
4. 矩阵链乘法
int matrixChain(vector<int>& p) {int n = p.size()-1;vector<vector<int>> dp(n, vector<int>(n, 0));for (int len = 2; len <= n; len++) {for (int i = 0; i <= n - len; i++) {int j = i + len - 1;dp[i][j] = INT_MAX;for (int k = i; k < j; k++) {int cost = dp[i][k] + dp[k+1][j] + p[i]*p[k+1]*p[j+1];dp[i][j] = min(dp[i][j], cost);}}}return dp[0][n-1];
}

动态规划类型

类型特点经典问题
线性DP状态线性排列最大子数组和
区间DP处理区间最优解矩阵链乘、石子合并
状态压缩DP用位运算表示状态旅行商问题(TSP)
树形DP在树结构上进行状态转移二叉树中的最大路径和
数位DP处理数字位相关问题数字计数问题
数位DP处理快速更改查询快速更改查询问题

优化技巧

  1. 滚动数组:减少空间复杂度

    // 斐波那契滚动数组示例
    int fib(int n) {if (n < 2) return n;int a = 0, b = 1;for (int i = 2; i <= n; i++) {int t = b;b = a + b;a = t;}return b;
    }
    
  2. 记忆化搜索:自顶向下递归+缓存

    vector<int> memo;
    int fib_memo(int n) {if (n <= 1) return n;if (memo[n] != -1) return memo[n];return memo[n] = fib_memo(n-1) + fib_memo(n-2);
    }
    
  3. 状态压缩:使用位运算减少维度


解题模板

int dp_solution(/* 输入参数 */) {// 1. 初始化DP数组vector<vector<int>> dp(m, vector<int>(n, 0));// 2. 设置边界条件for (int i = 0; i < m; i++) dp[i][0] = ...;for (int j = 0; j < n; j++) dp[0][j] = ...;// 3. 状态转移for (int i = 1; i < m; i++) {for (int j = 1; j < n; j++) {dp[i][j] = ... // 状态转移方程}}// 4. 返回结果return dp[m-1][n-1];
}

掌握动态规划需要理解"状态定义"和"状态转移"两个核心概念,通过练习经典问题培养解题直觉。

http://www.dtcms.com/wzjs/306935.html

相关文章:

  • 河南中州路桥建设有限公司网站赣州是哪个省
  • 黄冈市住房和城乡建设厅网站引流推广网站平台
  • 餐饮vi设计开题报告范文优化网站有哪些方法
  • 做公司网站排名百度热搜词排行榜
  • 给网站公司做网站今日发生的重大新闻
  • b2b电子商务网站建设2022年关键词排名
  • wap娃派手机信息网南宁seo优化公司排名
  • 洛阳网站建设网站建设中国大数据平台官网
  • 天津企业网站建设哪家好搜索引擎优化心得体会
  • 网站代发怎么做东莞有限公司seo
  • 网页设计制作分段brseo优化排名价格
  • 河南做网站公司哪家好搜索引擎优化的定义是什么
  • 舟山的房子做民宿上什么网站seo顾问张智伟
  • 黑龙江大庆疫情最新情况长沙seo培训班
  • 各国网站建设排名百度云网页版登录入口
  • 电子商务网站建设课设学生体会关键词搜索量怎么查
  • 网站增加新闻功能怎么自己开发网站
  • b2c购物网站建设哪个平台推广效果好
  • 潮州网站seo百度网页推广费用
  • 企业自助网站建设影视网站怎么优化关键词排名
  • 外资做网站的公司百度竞价广告
  • 山东网站建设流程拓客软件哪个好用
  • 建设小说网站违法吗最新足球消息
  • 网站建设与优化标准百度一下你就知道下载安装
  • wordpress如何添加自定义元素关键词优化公司费用多少
  • 优秀vi设计案例分析pptseo技术306
  • wordpress the7 seoseo优化网站百度技术
  • 自己做网站要买服务器吗苏州关键词搜索排名
  • 委托做的网站版权归属深圳华强北最新消息
  • m开头的可以做网站的软件nba排名最新排名