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

慈利网站开发广告公司网站制作

慈利网站开发,广告公司网站制作,电商网站seo优化目标分解,怎么在网上销售1.给定一个非负整数 N&#xff0c;找出小于或等于 N 的最大的整数&#xff0c;同时这个整数需要满足其各个位数上的数字是单调递增。 &#xff08;当且仅当每个相邻位数上的数字 x 和 y 满足 x < y 时&#xff0c;我们称这个整数是单调递增的。&#xff09; #include <…

1.给定一个非负整数 N,找出小于或等于 N 的最大的整数,同时这个整数需要满足其各个位数上的数字是单调递增。

(当且仅当每个相邻位数上的数字 x 和 y 满足 x <= y 时,我们称这个整数是单调递增的。)

#include <bits/stdc++.h>
using namespace std;
int find(int N)
{
    string str=to_string(N);
    int flag=str.size();
    for(int i=str.size()-1;i>0;i--)
    {
        if(str[i]<str[i-1])
        {
            flag=i;
            str[i-1]--;
        }
     } 
     for(int i=flag;i<str.size();i++)
     {
         str[i]='9';
     }
     return stoi(str);
 } 
 int main()
 {
    int N=332;
    int t=find(N);
    cout<<t;
   return 0;
 }

思路:

题目要求小于等于N的最大单调递增的整数,那么拿一个两位的数字来举例。

例如:98,一旦出现strNum[i - 1] > strNum[i]的情况(非单调递增),首先想让strNum[i - 1]--,然后strNum[i]给为9,这样这个整数就是89,即小于98的最大的单调递增整数。

这一点如果想清楚了,这道题就好办了。

此时是从前向后遍历还是从后向前遍历呢?

从前向后遍历的话,遇到strNum[i - 1] > strNum[i]的情况,让strNum[i - 1]减一,但此时如果strNum[i - 1]减一了,可能又小于strNum[i - 2]。

这么说有点抽象,举个例子,数字:332,从前向后遍历的话,那么就把变成了329,此时2又小于了第一位的3了,真正的结果应该是299。

那么从后向前遍历,就可以重复利用上次比较得出的结果了,从后向前遍历332的数值变化为:332 -> 329 -> 299

确定了遍历顺序之后,那么此时局部最优就可以推出全局。

2.斐波那契数,通常用 F(n) 表示,形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是: F(0) = 0,F(1) = 1 F(n) = F(n - 1) + F(n - 2),其中 n > 1 给你n ,请计算 F(n) 。

#include <bits/stdc++.h>
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 main()
{
    int t=fib(7);
    cout<<t;
    return 0;
}

 思路:

动规五部曲:

这里我们要用一个一维dp数组来保存递归的结果

1.确定dp数组以及下标的含义

dp[i]的定义为:第i个数的斐波那契数值是dp[i]

2.确定递推公式

为什么这是一道非常简单的入门题目呢?

因为题目已经把递推公式直接给我们了:状态转移方程 dp[i] = dp[i - 1] + dp[i - 2];

3.dp数组如何初始化

即dp[0]=0  dp[1]=1

4.确定遍历顺序

从递归公式dp[i] = dp[i - 1] + dp[i - 2];中可以看出,dp[i]是依赖 dp[i - 1] 和 dp[i - 2],那么遍历的顺序一定是从前到后遍历的

5.举例推导dp数组

按照这个递推公式dp[i] = dp[i - 1] + dp[i - 2],我们来推导一下,当N为10的时候,dp数组应该是如下的数列:

0 1 1 2 3 5 8 13 21 34 55

如果代码写出来,发现结果不对,就把dp数组打印出来看看和我们推导的数列是不是一致的。

2.假设你正在爬楼梯。需要 n 阶你才能到达楼顶。

每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?

注意:给定 n 是一个正整数。

#include <bits/stdc++.h>
using namespace std;
int climbstair(int n)
{
    if(n<=1)
    return n;
    vector<int> dp(n+1);
    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 t=climbstair(6);
    cout<<t;
    return 0;
}
 

思路:

爬到第一层楼梯有一种方法,爬到二层楼梯有两种方法。

那么第一层楼梯再跨两步就到第三层 ,第二层楼梯再跨一步就到第三层。

所以到第三层楼梯的状态可以由第二层楼梯 和 到第一层楼梯状态推导出来,那么就可以想到动态规划了。

我们来分析一下,动规五部曲:

定义一个一维数组来记录不同楼层的状态

1.确定dp数组以及下标的含义

dp[i]: 爬到第i层楼梯,有dp[i]种方法

2.确定递推公式

如何可以推出dp[i]呢?

从dp[i]的定义可以看出,dp[i] 可以有两个方向推出来。

首先是dp[i - 1],上i-1层楼梯,有dp[i - 1]种方法,那么再一步跳一个台阶不就是dp[i]了么。

还有就是dp[i - 2],上i-2层楼梯,有dp[i - 2]种方法,那么再一步跳两个台阶不就是dp[i]了么。

那么dp[i]就是 dp[i - 1]与dp[i - 2]之和!

所以dp[i] = dp[i - 1] + dp[i - 2] 。

在推导dp[i]的时候,一定要时刻想着dp[i]的定义,否则容易跑偏。

这体现出确定dp数组以及下标的含义的重要性!

3.dp数组如何初始化

再回顾一下dp[i]的定义:爬到第i层楼梯,有dp[i]种方法。

那么i为0,dp[i]应该是多少呢,这个可以有很多解释,但基本都是直接奔着答案去解释的。

例如强行安慰自己爬到第0层,也有一种方法,什么都不做也就是一种方法即:dp[0] = 1,相当于直接站在楼顶。

但总有点牵强的成分。

那还这么理解呢:我就认为跑到第0层,方法就是0啊,一步只能走一个台阶或者两个台阶,然而楼层是0,直接站楼顶上了,就是不用方法,dp[0]就应该是0.

其实这么争论下去没有意义,大部分解释说dp[0]应该为1的理由其实是因为dp[0]=1的话在递推的过程中i从2开始遍历本题就能过,然后就往结果上靠去解释dp[0] = 1

从dp数组定义的角度上来说,dp[0] = 0 也能说得通。

需要注意的是:题目中说了n是一个正整数,题目根本就没说n有为0的情况。

所以本题其实就不应该讨论dp[0]的初始化!

我相信dp[1] = 1,dp[2] = 2,这个初始化大家应该都没有争议的。

所以我的原则是:不考虑dp[0]如何初始化,只初始化dp[1] = 1,dp[2] = 2,然后从i = 3开始递推,这样才符合dp[i]的定义。

4.确定遍历顺序

从递推公式dp[i] = dp[i - 1] + dp[i - 2];中可以看出,遍历顺序一定是从前向后遍历的

5.举例推导dp数组

举例当n为5的时候,dp table(dp数组)应该是这样的。

这题和斐波那契数列非常相似,唯一的区别是,没有讨论dp[0]应该是什么,因为dp[0]在本题没有意义!

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

相关文章:

  • 如何拍做美食的视频网站sem和seo有什么区别
  • 厦门建设局长是谁海南seo排名优化公司
  • 做职业规划的网站网站优化北京seo
  • 做会展网站的公司的工作流程seo扣费系统
  • 网站建设 你真的懂吗广州网络推广定制
  • 上海房产网站建设小程序推广方案
  • 英文网站建设 招标促销活动推广方法有哪些
  • 常州医院网站建设全网推广的方式有哪些
  • 海南房地产网站建设国内最近发生的重大新闻
  • 江苏建设行业证书编号查询网站域名注册流程
  • 腾讯企业邮箱入口网页版关键词seo优化排名
  • 企业做网站优势百度在西安的公司叫什么
  • 微网站案例3000块钱在朋友圈投放广告
  • 网站建设企业推荐360推广登录平台
  • 做网站的电话sem是什么专业
  • 云南省网站建设收费调查报告论文seo顾问什么职位
  • 佛山网站设计怎么做最近一周的时政热点新闻
  • 网站优化总结报告找客户资源的软件免费的
  • 企业解决方案架构三台网站seo
  • 网站建设企业资质宁波抖音seo搜索优化软件
  • wordpress做网站容易吗金华seo扣费
  • wordpress 当前文章分类id沈阳百度seo关键词排名优化软件
  • 直接采用模板网站有什么缺点品牌公关公司
  • 网店设计美工培训南京seo收费
  • 游戏网站建站网络营销分析报告
  • 网站做直播功能需要注册吗最新国内新闻50条简短
  • 有关毕业设计的网站竞价托管收费标准
  • xp 做网站服务器百度竞价推广常用到的工具
  • 不限空间的免费网站aso优化渠道
  • 网站服务器怎么做网站页面设计