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

微信如何做微商城网站百度seo营销推广多少钱

微信如何做微商城网站,百度seo营销推广多少钱,企业所得税优惠政策2021年最新,js调用wordpress动态规划模块(上) 题一 爬楼梯题二 杨辉三角题三 打家劫舍题四 完全平方数题五 零钱兑换 动态规划的题主要就是要抽象出来状态方程跟边界 题一 爬楼梯 这里使用到了滚动数组,可以降低存储数据的空间复杂度 用f(x) f(x-1)f(x-2),f(x)表示第x级…

动态规划模块(上)

  • 题一 爬楼梯
  • 题二 杨辉三角
  • 题三 打家劫舍
  • 题四 完全平方数
  • 题五 零钱兑换

动态规划的题主要就是要抽象出来状态方程跟边界

题一 爬楼梯

在这里插入图片描述

这里使用到了滚动数组,可以降低存储数据的空间复杂度
用f(x) = f(x-1)+f(x-2),f(x)表示第x级台阶的方案数,考虑最后一步可能跨了一级台阶,也可能跨了两级台阶。
意思是爬到第x级台阶的方案数等于爬到第(x-1)阶台阶的方案数加上爬到第(x-2)阶台阶的方案数
至于边界就是第0级台阶看做一个方案为f(0) = 1;第一级台阶也只有一种方案就是f(1) = 1
因此状态方程跟边界都得到了

class Solution{
public:int climbStairs(int n){int p=0,q=0,r=1;p = q;q = r;r = p+q;}return r;
}

题二 杨辉三角

在这里插入图片描述

杨辉三角的特点是其每行的左右两端的数字为1,且每一行的行数等于个数
然后中间的数等于前一行左右上方两个数的和;
于是得到状态方程有f[i][j] = f[i-1][j-1] + f[i-1][j],而边界就是上面提到的1

class Soulution{
public:vector<vector<int>> generate(int numsRows){vector<vector<int> > ret(numsRows);for(int i=0;i<numsRows;i++){ret[i].resize(i+1);ret[i][0] = ret[i][i] = 1;for(int j=1;j<i;j++){ret[i][j] = ret[i-1][j-1] + ret[i-1][j];}}return ret;} 
}

下面给出一个使用一维数组的做法,主要是之前有个小公司面试 里面的老板居然让我实现一下 我当时都不知道杨辉三角是什么 贴在下面纪念一下:

class Solution {
public:vector<vector<int>> generate(int numRows) {vector<vector<int>> ret;for(int i = 1; i <= numRows; i++){ //创建并初始化数组vector<int> cur(i);cur[0] = cur[i-1] = 1;ret.push_back(cur);}for(int i = 0; i < numRows; i++){ //计算和:f[i][j] = f[i-1][j-1]+f[i-1][j]for(int j = 1; j < i; j++){ret[i][j] = ret[i-1][j-1] + ret[i-1][j];}}return ret;}
};

题三 打家劫舍

在这里插入图片描述

首先考虑边界:只有一间屋就偷这一间,有两间屋就偷钱多的
若是超过2间屋,则根据偷的房间由于不能连续,是否偷取当前房子取决于前前一间与当前的金额之和是否比前一间的多因此:
用dp[i]表示前i间房能够偷取到的最多金额数量,则有 dp[i] = max(dp[i-2]+nums(i),dp[i-1]),于是得到了转移方程
而边界条件则是:
dp[0] = nums[0] , dp[1] = max(nums[0],nums[1])
最后的答案便是dp[n-1]
同样这里使用了滚动数组可以节省空间

class Solution{
public:int rob(vector<int>& nums){if(nums.empty()) return 0;if(nums.size()==1) return nums[0];int first = nums[0],second = max(nums[0],nums[1]);for(int i =2;i<size();i++){int temp = second;second = max(first+nums[i],second);first = temp;}return second;}
}

题四 完全平方数

在这里插入图片描述

f[i] 表示至少需要多少个数的平方来表示整数 i
这些数会落在[1,根号i],枚举这些数,假设当前枚举到j,那么我们还需要取若干数的平方,构成i - j^2。则状态方程如下
在这里插入图片描述
其中f[0] = 0为边界条件,实际上无法表示0,只是为了保证状态转移过程中遇到j恰为根号i 的情况合法
同时因为计算f[i]时所需要的状态仅有f[i-j^2],必然小于i,因此我们只需要从小到大地枚举i来计算f[i]即可

class Solution{
public:int numSquares(int n){vector<int> f(n+1);for(int i=1;i<=n;i++){minn = min(minn,f[i-j*j]);}f[i] = minn+1;}return f[n];
}

题五 零钱兑换

在这里插入图片描述

我们采用自下而上的方式进行思考。仍定义 F(i) 为组成金额 i 所需最少的硬币数量,假设在计算 F(i) 之前,我们已经计算出 F(0)−F(i−1) 的答案。 则 F(i) 对应的转移方程应为
在这里插入图片描述
在这里插入图片描述


class Solution{
public:int coinChange(vector<int>& coins,int amount){int Max = amount+1;vector<int> dp(amount+1,Max);dp[0] = 0;for(int i=1;i<=amount;++i){for(int j=0;j<(int)coins.size();++j){if(coins[j]<=i){dp[i] = min(dp[i],dp[i-coins[j]]+1);}}}return dp[amount]>amount?-1:dp[amount];}};
http://www.dtcms.com/wzjs/29214.html

相关文章:

  • 张家口做网站免费聊天软件
  • 网站备案icp备案黑帽seo排名技术
  • 网站内的链接怎么做郑州百度公司地址
  • 怎样快速安装wordpress山东网站seo
  • 阿里云网站备案多少天站长统计app网站
  • 绍兴市建设银行网站seo怎么才能做好
  • 广州知名网站建设有哪些中山seo关键词
  • 网站开发与设计结课论文深圳竞价排名网络推广
  • 外国人做汉字网站潍坊seo推广
  • 在做博彩的公司做网站运营犯法吗泰州seo平台
  • vs2008怎么做网站销售平台软件有哪些
  • 新加坡政府网站建设特点黑科技引流工具
  • 网站建设费用标准免费学生网页制作成品
  • 上海市建设信息网官网南昌网站优化公司
  • 网站未收录千锋教育靠谱吗
  • 好网站设计公司建网站有哪些步骤
  • 资料员报名入口官网seo优化软件有哪些
  • 绍兴网站建设专业的公司排名优化价格
  • 济南做网站优化哪家好五种网络营销推广方法
  • 公众号做 视频网站企业营销网站制作
  • 做食品的网站设计要注意自动化测试培训机构哪个好
  • 挂机宝怎么做网站贴吧推广400一个月
  • 招商网站建设公司推广app
  • 外贸公司网站素材网络营销的12种手段
  • 彩视音乐相册制作下载安装seo线下培训机构
  • 给公司建立网站吗中国知名网站排行榜
  • 公司网站制作效果推广任务接单平台
  • 网站首页psd下载潍坊网站建设平台
  • 青岛做网站建设的公司排名百度网址大全首页链接
  • 宜春做网站的公司哪家好有效获客的六大渠道