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

做网站视频教程做网站无锡

做网站视频教程,做网站无锡,石家庄网站建设机构,搜索引擎优化的流程是什么五部曲#xff08;代码随想录#xff09; 1.确定 dp 数组以及下标含义 2.确定递推公式 3.确定 dp 数组初始化 4.确定遍历顺序 5.debug 入门题 1.斐波那契数 思路 1.f[i]#xff1a;第 i 个数的值 2.f[i] f[i - 1] f[i - 2] 3.f[0] 0, f[1] 1 4.顺序遍历 5.记得特判 …五部曲代码随想录 1.确定 dp 数组以及下标含义 2.确定递推公式 3.确定 dp 数组初始化 4.确定遍历顺序 5.debug 入门题 1.斐波那契数 思路 1.f[i]第 i 个数的值 2.f[i] f[i - 1] f[i - 2] 3.f[0] 0, f[1] 1 4.顺序遍历 5.记得特判 n 0 的时候因为初始化了 f[1] class Solution { public:int fib(int n) {if(n 0) return n;vectorint f(n 1);f[0] 0, f[1] 1;for(int i 2; i n; i) f[i] f[i - 1] f[i - 2];return f[n];} };2.爬楼梯 思路 每次可以从下面一个台阶或者下面两个台阶处上来 1.f[i]爬到第 i 阶楼梯有多少种方法 2.f[i] f[i - 1] f[i - 2] 3.f[0] 1, f[1] 1 4.顺序遍历 class Solution { public:int climbStairs(int n) {vectorint f(n 1);f[0] 1, f[1] 1;for(int i 2; i n; i) f[i] f[i - 1] f[i - 2];return f[n];} };3.使用最小花费爬楼梯 思路 可以从 0 或 1 处开始爬楼梯需要爬到第 n 阶楼梯 1.f[i]爬到第 i 阶楼梯需要的最小花费 2.f[i] min(f[i - 1] cost[i - 1], f[i - 2] cost[i - 2) 3.f[0] 0, f[1] 0 4.顺序遍历 class Solution { public:int minCostClimbingStairs(vectorint cost) {int n cost.size();vectorint f(n 1);f[0] 0, f[1] 0;for(int i 2; i n; i){f[i] min(f[i - 1] cost[i - 1], f[i - 2] cost[i - 2]);}return f[n];} };4.不同路径 思路 1.f[i][j]: 走到 (i, j) 总共的路径 2.f[i][j] f[i - 1][j] f[i][j - 1] 3.f[i][1] 1, f[1][i] 1 4.顺序遍历 class Solution { public:int uniquePaths(int m, int n) {vectorvectorint f(n 1, vectorint(m 1));for(int i 0; i n; i) f[i][1] 1;for(int i 0; i m; i) f[1][i] 1;for(int i 2; i n; i){for(int j 2; j m; j){f[i][j] f[i - 1][j] f[i][j - 1];}}return f[n][m];} };5.不同路径 II 思路 1.f[i][j]: 走到 (i, j) 总共的路径 2.f[i][j] f[i - 1][j] f[i][j - 1] 3.f[i][0] 1, f[0][i] 1, 其他 0 4.顺序遍历 class Solution { public:int uniquePathsWithObstacles(vectorvectorint obstacleGrid) {int n obstacleGrid.size();int m obstacleGrid[0].size();vectorvectorint f(n, vectorint(m, 0));for(int i 0; i n !obstacleGrid[i][0]; i) f[i][0] 1;for(int i 0; i m !obstacleGrid[0][i]; i) f[0][i] 1;for(int i 1; i n; i){for(int j 1; j m; j){if(!obstacleGrid[i][j]){f[i][j] f[i - 1][j] f[i][j - 1];}}}return f[n - 1][m - 1];} };6.整数拆分 思路 1.f[i]: 拆数字 i 可得到的最大乘积 2.拆分成 j * (i - j) 或 j * f[i - j]f[i] max(f[i], max(j * (i - j), j * [i - j])) 3.f[0] 0, f[1] 1 4.顺序遍历 class Solution { public:int integerBreak(int n) {vectorint f(n 1);f[0] 0, f[1] 1;for(int i 2; i n; i){for(int j 0; j i; j){f[i] max(f[i], max(j * (i - j), j * f[i - j]));}}return f[n];} };7.不同的二叉搜索树 思路 dp[3]就是 元素1为头结点搜索树的数量 元素2为头结点搜索树的数量 元素3为头结点搜索树的数量 元素1为头结点搜索树的数量 右子树有2个元素的搜索树数量 * 左子树有0个元素的搜索树数量 元素2为头结点搜索树的数量 右子树有1个元素的搜索树数量 * 左子树有1个元素的搜索树数量 元素3为头结点搜索树的数量 右子树有0个元素的搜索树数量 * 左子树有2个元素的搜索树数量 有2个元素的搜索树数量就是dp[2]。 有1个元素的搜索树数量就是dp[1]。 有0个元素的搜索树数量就是dp[0]。 所以dp[3] dp[2] * dp[0] dp[1] * dp[1] dp[0] * dp[2] dp[i] dp[以j为头结点左子树节点数量] * dp[以j为头结点右子树节点数量] 1.f[i]: 由 1 到 i 个节点的二叉搜索树个数 2.f[i] f[j - 1] * f[i - j] 3.f[0] 1 4.顺序遍历 class Solution { public:int numTrees(int n) {vectorint f(n 1);f[0] 1;for(int i 1; i n; i){for(int j 1; j i; j){f[i] f[j - 1] * f[i - j];}}return f[n];} };背包问题 1.01背包问题 思路 1.f[i][j]: 前 i 个物品在容量为 j 的情况下的最大价值 2.f[i][j] max(f[i - 1][j], f[i - 1][j - v[i]] w[i]) 3.全部 0 4.顺序遍历 #includeiostream using namespace std; const int N 1e3 10; int f[N][N], v[N], w[N]; int n, m;int main(){scanf(%d%d, n, m);for(int i 1; i n; i) scanf(%d%d, v[i], w[i]);for(int i 1; i n; i){for(int j 0; j m; j){// 不选f[i][j] f[i - 1][j];// 选if(v[i] j) f[i][j] max(f[i - 1][j], f[i - 1][j - v[i]] w[i]);}}printf(%d, f[n][m]);return 0; }// 滚动数组优化 #includeiostream using namespace std; const int N 1e3 10; int f[N], v[N], w[N]; int n, m;int main(){scanf(%d%d, n, m);for(int i 1; i n; i) scanf(%d%d, v[i], w[i]);for(int i 1; i n; i){for(int j m; j v[i]; j--){f[j] max(f[j], f[j - v[i]] w[i]);}}printf(%d, f[m]);return 0; }2.分割等和子集 思路 分割成两个等和子集即找到是否存在和为 sum / 2 的子集转化为 01 背包背包容量为 sum / 2 1.f[j]: 背包容量为 i放入物品后的最大重量 2.f[j] max(f[j], f[j - nums[i]] nums[i]) 3.全部 0 4.倒序遍历 class Solution { public:bool canPartition(vectorint nums) {int n nums.size(), sum 0;for(int i 0; i n; i) sum nums[i];if(sum % 2) return false;vectorint f(10001, 0);for(int i 0; i n; i){for(int j sum / 2; j nums[i]; j--){f[j] max(f[j], f[j - nums[i]] nums[i]);if(f[j] sum / 2) return true;}}return false;} };3.最后一块石头的重量 II 思路 尽可能分成两堆重量相同使得相撞后重量最小 1.f[j]: 容量为 j 的背包最大价值 2.f[j] max(f[j], f[j - stones[i]] stones[i]) 3.全部 0 4.倒序遍历 class Solution { public:int lastStoneWeightII(vectorint stones) {int n stones.size(), sum 0;for(int i 0; i n; i) sum stones[i];vectorint f(1501, 0);for(int i 0; i n; i){for(int j sum / 2; j stones[i]; j--){f[j] max(f[j], f[j - stones[i]] stones[i]);}}return (sum - f[sum / 2]) - f[sum / 2];} };4.目标和 思路 pos - neg tar 得 pos - (sum - pos) tar 得 pos (sum tar) / 2 转换为背包容量为 pos有多少种情况装满 无解的情况pos 为奇数tar 的绝对值大于 sum 只要搞到 nums[i]凑成 f[j] 就有 f[j - nums[i]] 种方法。 例如f[j]j 为5 已经有一个1nums[i]的话有 f[4]种方法 凑成 容量为5的背包。 已经有一个2nums[i]的话有 f[3]种方法 凑成 容量为5的背包。 已经有一个3nums[i]的话有 f[2]中方法 凑成 容量为5的背包 已经有一个4nums[i]的话有 f[1]中方法 凑成 容量为5的背包 已经有一个5nums[i]的话有 f[0]中方法 凑成 容量为5的背包 那么凑整 f[5] 有多少方法呢也就是把 所有的 f[j - nums[i]] 累加起来。 1.f[j]填满 j 背包有多少种情况 2.f[j] f[j - nums[i]] 3.f[0] 1其他 0 4.倒序遍历 class Solution { public:int findTargetSumWays(vectorint nums, int target) {int n nums.size(), sum 0;for(int i 0; i n; i) sum nums[i];if((sum target) % 2 || abs(target) sum) return 0;int pos (sum target) / 2;vectorint f(pos 1, 0);f[0] 1;for(int i 0; i n; i){for(int j pos; j nums[i]; j--){f[j] f[j - nums[i]];}}return f[pos];} };5.一和零 思路 可以等价为两个 01 背包一个装 0一个装 1 1.f[i][j]: 最多有 i 个 0 和 j 个 1 的最长子集大小 2.f[i][j] max(f[i][j], f[i - zero][j - one] 1) 3.全部 0 4.倒序遍历 class Solution { public:int findMaxForm(vectorstring strs, int m, int n) {vectorvectorint f(m 1, vectorint(n 1, 0));for(auto str : strs){int zero 0, one 0;for(int i 0; i str.size(); i){if(str[i] 0) zero;else one; }for(int i m; i zero; i--){for(int j n; j one; j--){f[i][j] max(f[i][j], f[i - zero][j - one] 1);}}}return f[m][n];} };
http://www.zqtcl.cn/news/872079/

相关文章:

  • 昆明网上商城网站建设怎么做网站教程视频
  • 网站开发都需要什么移动公司网络维护待遇
  • 计算机网络技术网站建设方向wordpress虚拟货币
  • 小江网站建设公司紧急页面通知升级中访问大通知
  • 那个公司做的网站详情页好看做动态图片的网站吗
  • 旅游网站模板文章wordpress 删除
  • 沛县专业做网站wordpress id重置密码
  • 湖南邵阳建设局网站做外贸一般用什么网站
  • html网站开发主要涉及哪些技术越秀金融大厦地址
  • 北京建设银行网站田村广州室内设计公司排行榜
  • 安徽金路建设集团有限公司网站平面设计班培训入门
  • 小型电子商务网站开发php mysql网站开发教程
  • 网站建设常州麦策电商2 网站建设的一般步骤包含哪些
  • cn免费域名注册网站企业推广的渠道有哪些
  • 关于网站建设心得体会网站的功能包括哪些
  • 番禺网站制作技术网站建设与管理pdf
  • 毕业设计做网站选题营销型网站功能模块
  • 西部数码网站管理助手安装建工教育网
  • wordpress 网站logowordpress文本编辑器插件
  • 杭州装饰网站建设如何免费建购物网站
  • 在vs做的项目怎么连接到网站珠海有什么网站
  • 网上购物网站建设论文6做的网站必须放在idc机房吗
  • 基于asp.net的视频网站开发500套wordpress模板
  • 商城模板建站价格寻找专业网站建设
  • 网址我的上网主页seo培训中心
  • 上海建网站服务器河南网站推广优化排名
  • 夸克作文网站淄博团购网站建设
  • 家居类企业响应式网站一个很好的个人网站开发
  • 推荐网站建设服务器百度竞价入口
  • 微信如何做网站100个成功营销策划案例