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

陕西省建设厅特种工报名网站百度网站建设公司

陕西省建设厅特种工报名网站,百度网站建设公司,wordpress内容批量替换,wordpress中portfolio1--动态规划理论基础 动态规划经典问题#xff1a;① 背包问题#xff1b;② 打家劫舍#xff1b;③ 股票问题#xff1b; ④ 子序列问题#xff1b; 动态规划五部曲#xff1a; ① 确定 dp 数组及其下标的含义#xff1b; ② 确定递推公式#xff1b; ③ 确定 dp 数组…1--动态规划理论基础 动态规划经典问题① 背包问题② 打家劫舍③ 股票问题 ④ 子序列问题 动态规划五部曲         ① 确定 dp 数组及其下标的含义         ② 确定递推公式         ③ 确定 dp 数组的初始化         ④ 确定遍历顺序一般为从左到右         ⑤ 打印 dp 数组一般用于检查 2--斐波那契数 主要思路         经典动态规划dp[i] 表示第 i 个数的斐波那契数递推公式为dp[i] dp[i-1] dp[i - 2]初始化dp[0] 1dp[1] 1遍历顺序从左到右 #include iostream #include vectorclass Solution { public:int fib(int n) {if(n 1) return n;std::vectorint dp(n1, 0);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 main(int argc, char argv[]){int test 2;Solution S1;int res S1.fib(test);std::cout res std::endl;return 0; }3--爬楼梯 主要思路         经典动态规划dp[i] 表示到达第 i 阶楼梯的方法数递推公式为 dp[i] dp[i - 1] dp[i - 2]初始化dp[1] 1, dp[2] 2遍历顺序从左到右 #include iostream #include vectorclass Solution { public:int climbStairs(int n) {if(n 2) return n; std::vectorint dp(n1, 0);dp[1] 1, dp[2] 2;for(int i 3; i n; i){dp[i] dp[i - 1] dp[i - 2];}return dp[n];} };int main(int argc, char argv[]){int n 2;Solution S1;int res S1.climbStairs(n); std::cout res std::endl;return 0; }4--使用最小花费爬楼梯 主要思路         dp[i] 表示到达第 i 阶楼梯需要的最小花费初始化 dp[0] 0, dp[1] 0因为可以从 0 和 1 出发因此不需要花费递推公式为 dp[i] std::min(dp[i-1] cost[i-1], dp[i-2] cost[i-2])默认从左到右遍历 #include iostream #include vectorclass Solution { public:int minCostClimbingStairs(std::vectorint cost) {std::vectorint dp(cost.size()1, 0); // 到达第i阶的最小花费dp[0] 0;dp[1] 0;for(int i 2; i cost.size(); i){dp[i] std::min(cost[i-2]dp[i-2], cost[i-1]dp[i-1]);}return dp[cost.size()];} };int main(int argc, char argv[]){// cost [1,100,1,1,1,100,1,1,100,1]std::vectorint cost {1, 100, 1, 1, 1, 100, 1, 1, 100, 1};Solution S1;int res S1.minCostClimbingStairs(cost);std::cout res std::endl;return 0; }5--不同路径 主要思路         dp[i][j] 表示到达 (i, j) 位置的路径数初始化两个边界 dp[i][0] 1dp[0][j] 1状态转移方程为dp[i][j] dp[i-1][j] dp[i][j-1]遍历顺序为从上到下从左到右 #include iostream #include vectorclass Solution { public:int uniquePaths(int m, int n) {std::vectorstd::vectorint dp(m, std::vectorint(n, 0));// 初始化for(int i 0; i m; i) dp[i][0] 1;for(int j 0; j n; j) dp[0][j] 1;// 遍历for(int r 1; r m; r){for(int c 1; c n; c){dp[r][c] dp[r-1][c] dp[r][c-1];}}return dp[m-1][n-1];} };int main(int argc, char argv[]){// m 3, n 7int m 3, n 7;Solution S1;int res S1.uniquePaths(m, n);std::cout res std::endl;return 0; }6--不同路径II 主要思路         与上题类似dp[i][j] 表示到达 (i, j) 位置的路径数初始化两个边界 dp[i][0] 1dp[0][j] 1确保边界没有障碍物有障碍物初始化为0状态转移方程为(i, j)不是障碍物则 dp[i][j] dp[i-1][j] dp[i][j-1](i, j)为障碍物则dp[i][j] 0遍历顺序为从上到下从左到右 #include iostream #include vectorclass Solution { public:int uniquePathsWithObstacles(std::vectorstd::vectorint obstacleGrid) {int m obstacleGrid.size(), n obstacleGrid[0].size();if(obstacleGrid[m-1][n-1] 1) return 0;std::vectorstd::vectorint dp(m, std::vectorint(n, 0));// 初始化for(int i 0; i m obstacleGrid[i][0] ! 1; i) dp[i][0] 1;for(int j 0; j n obstacleGrid[0][j] ! 1; j) dp[0][j] 1;// 遍历for(int r 1; r m; r){for(int c 1; c n; c){if(obstacleGrid[r][c] 1) dp[r][c] 0; // 障碍else dp[r][c] dp[r-1][c] dp[r][c-1];}}return dp[m-1][n-1];} };int main(int argc, char argv[]){// obstacleGrid [[0,0,0],[0,1,0],[0,0,0]]std::vectorstd::vectorint test {{0, 0, 0}, {0, 1, 0}, {0, 0, 0}};Solution S1;int res S1.uniquePathsWithObstacles(test);std::cout res std::endl;return 0; }7--整数拆分 主要思路         dp[i] 表示整数 i 拆分后的最大乘积初始化dp[0] 0, dp[1] 0, dp[2] 1; 状态转移方程为dp[i] max(dp[i], max(j*(i-j), j * dp[i-j])) #include iostream #include vectorclass Solution { public:int integerBreak(int n) {std::vectorint dp(n1, 0);// 初始化dp[0] 0, dp[1] 0, dp[2] 1;// 遍历for(int i 3; i n; i){for(int j 0; j i/2; j){dp[i] std::max(dp[i], std::max(j*(i-j), j * dp[i-j]));}}return dp[n];} };int main(int argc, char argv[]){// n 10int test 10;Solution S1;int res S1.integerBreak(test);std::cout res std::endl;return 0; }8--不同的二叉搜索树 主要思路         dp[i] 表示由 i 个数字构成的不同二叉搜索树的数目         初始化dp[0] 1         状态转移方程dp[i] dp[j-1] * dp[i-j]0 j i其中 dp[j-1] 来构成 j 的左子树dp[i-j] 来构成 j 的右子树          遍历顺序两个 for 循环第 1 个 for 循环遍历 1 - n第二个 for 循环遍历 1 - i #include iostream #include vectorclass Solution { public:int numTrees(int n) {std::vectorint dp(n1, 0);// 初始化dp[0] 1;// 遍历for(int i 1; i n; i){for(int j 1; j i; j){dp[i] dp[j-1] * dp[i-j];}}return dp[n];} };int main(int argc, char *argv[]) {// n 3int test 3;Solution S1;int res S1.numTrees(test);std::cout res std::endl;return 0; } 9--
http://www.w-s-a.com/news/619201/

相关文章:

  • 怎么可以建网站小程序代理项目
  • 怎样做软件网站哪个网站用帝国cms做的
  • 网站开发编程的工作方法wordpress dux-plus
  • 廊坊电子商务网站建设公司网站进不去qq空间
  • 南宁网站推广费用创意网页设计素材模板
  • 深圳技术支持 骏域网站建设wordpress 酒主题
  • 东莞网站建设+旅游网站改版数据来源表改怎么做
  • 手机端做的优秀的网站设计企业做网站大概多少钱
  • 优化网站使用体验手机网站解析域名
  • 网站制作 商务做网站的软件名字全拼
  • 阿里巴巴网官方网站温州网站建设设计
  • 传奇购买域名做网站国外网站设计 网址
  • 西安凤城二路网站建设seo网站是什么
  • 网站后台如何更换在线qq咨询代码在线种子资源网
  • 东莞网站优化制作免费中文wordpress主题下载
  • 东莞建筑设计院排名网络优化论文
  • 做牙工作网站郑州前端开发培训机构
  • 温州专业建站网站制作的管理
  • 公司网站开发策划书有没有专门做教程的网站
  • 江苏省工程建设信息网站一天赚1000块钱的游戏
  • 制作响应式网站报价品牌建设整体体系包括什么
  • 网站推广策划报告目前做win7系统最好的网站
  • 东莞网站建设咨询公江西网站建设平台
  • 什么是网站功能源码下载站
  • 石家庄制作网站的公司双柏县住房和城乡建设局网站
  • 影视vip网站建设教程ppt模板免费下载 素材红色
  • 内蒙古城乡建设部网站首页平台网站建设ppt
  • 集约化网站建设项目官方网站建设
  • 原创先锋 北京网站建设网站开发电脑内存要多少
  • 婚恋网站建设项目创业计划书网站建设 食品