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

网页设计毕业论文免费百度整站优化

网页设计毕业论文免费,百度整站优化,网络推广软件分发平台,如何设置企业网站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/468253.html

相关文章:

  • 个人网站设计实验原理百度优化是什么
  • 怎么做flash网站设计浏览器打开
  • 有源代码怎么做网站最新国内新闻重大事件
  • 做网站的工作量项目推广网
  • wordpress缓存插件 w3seo怎么刷排名
  • 做网站开发最多能做几年谷歌搜索引擎为什么打不开
  • 公司网站建设维护的岗位模板建站教程
  • 大连百度网站快速优化指数基金
  • 余姚网站建设报价百度官方客服平台
  • 北京网站托管的公司成都网站seo
  • 微网站是什么百度搜索排名规则
  • 网站中使用特殊字体天猫关键词排名怎么控制
  • 商务网站建设详细步骤高端网站优化公司
  • 开通独立网站seo研究协会网app
  • 阿里巴巴网站建设基础服务seo短期课程
  • 深圳住房城乡建设局网站首页优化网站建设
  • 有些网站打开特别慢营销推广计划怎么写
  • 石家庄做网站的公司排名优化关键词公司
  • 付费问答 WordPress武汉网站建设方案优化
  • 免费做网站哪家好新闻热点事件2024最新
  • 帮忙做ppt赚钱的网站seo查询友情链接
  • php做网站难吗搜索引擎优化seo优惠
  • 大兴网站建设制作品牌推广方案案例
  • 网站建设地带精准营销平台
  • 福建有没有网站做鞋子一件代发网站收录提交
  • 开平网站建设推广发帖网站
  • web集团网站建设win7系统优化软件
  • 小微企业名录查询系统宁波seo如何做推广平台
  • 武汉网站建设公司哪家好网站搜索引擎优化报告
  • 专业网站设计网站现在最火的发帖平台