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

凡科免费个人做网站有弊吗泰州网站建设优化

凡科免费个人做网站有弊吗,泰州网站建设优化,南海网站建设多少钱,深圳高端网站制作** 描述 把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第 n个丑数。 数据范围: 0≤n≤2000 要求&#x…

**

描述

把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第 n个丑数。

数据范围:
0≤n≤2000
要求:空间复杂度 O(n) , 时间复杂度 O(n)
示例1
输入:7
返回值:8

题目分析

我们先看到题目,把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。
有了上面的定义我们就可以知道,丑数的形式就是2x3y5z.所有的丑数都会是由2x3y5^z组成的.
因此我们只需要根据此公式从小到大列举出每一个丑数,那么我们就能找到第n个丑数.
由于,x,y,z都是幂次方,且如果要从小到大寻找丑数,那么x,y,z都会逐渐增加,若想找到后一个幂次方的丑数,那么我们肯定会需要找到前一个幂次方的丑数.这时候我们就会想到用动态规划来解决此问题,因为我们可以将第n个丑数一直分解到第一个丑数,根据动态规划的转移方程,我们就可以一步步找到第n个丑数.

题解

说到动态规划,我们肯定会想到动态规划的三个步骤
1.确定状态
2.定义状态转移方程
3.求得最优解

1.确定状态

首先我们应该确定动态规划的起始状态,根据题干,我们能发现第一个丑数就是,我们即dp[0]=1,且此时x,y,z的值肯定都是0,即x=0,y=0,z=0.

2.定义状态转移方程

状态转移方程是这个题目的难点,我们需要知道如何通过状态转移方程来实现下一个丑数的定位,我们通过分析函数dp[i]=2x3y5z(其中i是第i个丑数的下标存储位置)可知,我们只要分别增大幂x,y,z,(x,y,z都从0开始增大)然后进行比较,我们就能找到我们想要的下一个丑数。
比如dp[0]=1,那么dp[1]的值,就是需要比较
213050 ,203150 ,203051 这三个值的大小,得出dp[1]=213050 = 2
因为213050 已经给dp[1],因此需要将第一个位置增大继续进行比较,那么如何进行增大呢?
这个地方也是本题最难理解的地方。我们先回到本题dp[i]=2x3y5z 这个函数上,我们可以想一下dp[i+1]有什么规律,dp[i+1]无非就是dp[i-k]*2,dp[i-k]*3,dp[i-k]*5 (k<i),三个其中的一个值,其中K可以是任意一个值,不一定是1.我们也可以反过来想,dp[i+1]/2,dp[i+1]/3,dp[i+1]/5的其中一个值,一定是dp[i]。所以我们这里只需要列出三路函数,第一路是关于dp[x]*2的函数,第二路是关于dp[y]*3,第三路是关于dp[z]*5的函数然后一直比较,就可以逐一找到每个丑数。其中x,y,z都是每一路线性增长的下标。这里需要解释一下为什么要分三路,因为d[i]的每次结果都需要乘2,乘3和乘5,以达到所有的质数都会被比较到的目的。且dp[i]乘2,乘3,乘5的值比较的时机是不同的。所以必须分为3个下标来分别统计幂x,y,z增长的值,从而进行动态规划比较。

求dp[2]:
根据上面的规则,第一个位置增大的值是dp[x=1]*2=(213050)*2=4
所以dp[2]的值,需要比较
223050 ,203150 ,203051 这三个值的大小,得出dp[2]=203150 = 3
求dp[3]:
同理第二个位置被取出,增大第二个位置,即dp[y=1]*3=(213050)*3=6
所以dp[3]的值,需要比较
223050 ,21315^0 ,203051 这三个值的大小,得出dp[3]=223050 = 4
求dp[4]:
后面为了便于观看,将直接用数字来代替,
接着第一个位置被取出,所以x需要继续增加,即dp[x=2]*2=3*2=6
dp[4]的值,需要比较
6 ,6 ,5 这三个值的大小,得出dp[4]=5
求dp[5]:
第三个数增大为dp[z=1]*5=2*5=10
dp[5]的值,需要比较
6 ,6 ,10 这三个值的大小,得出dp[5]=6,这时,一二位置都为6,所以都要增大,
即第一个位置dp[x=3]*2=4*2=8,第二个位置dp[y=2]*3=9
所以dp[5]的值需要比较
8,9,10这个三个数,得出dp[5]=8.

3.求得最优解

以此类推,就能列举出所有的丑数了。

下面是一个更为直观的动画图来解释此过程:

在这里插入图片描述

接下来就是算法部分:

public class Solution {/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可*           ** @param index int整型* @return int整型*/public int GetUglyNumber_Solution (int index) {if(index<=6){return index;}int[] dp = new int[index];dp[0] = 1;int x=0,y=0,z=0;for(int i=1;i<dp.length;i++){dp[i] = Math.min(dp[z]*5,Math.min(dp[x]*2,dp[y]*3));if(dp[i] == dp[x]*2){x++;}if(dp[i] == dp[y]*3){y++;}if(dp[i] == dp[z]*5){z++;}}return dp[index-1];}
}

文章转载自:
http://cowry.przc.cn
http://uncoffined.przc.cn
http://vehement.przc.cn
http://believer.przc.cn
http://eldred.przc.cn
http://adry.przc.cn
http://latchkey.przc.cn
http://seel.przc.cn
http://levigate.przc.cn
http://rdc.przc.cn
http://ags.przc.cn
http://halfhearted.przc.cn
http://grazioso.przc.cn
http://paradisiac.przc.cn
http://rowdydow.przc.cn
http://limbal.przc.cn
http://secularize.przc.cn
http://frank.przc.cn
http://sisyphean.przc.cn
http://elapid.przc.cn
http://spilt.przc.cn
http://coastwise.przc.cn
http://selig.przc.cn
http://hokypoky.przc.cn
http://biltong.przc.cn
http://nightclothes.przc.cn
http://croat.przc.cn
http://hexahydrobenzene.przc.cn
http://heterecious.przc.cn
http://toastmaster.przc.cn
http://mdram.przc.cn
http://holme.przc.cn
http://cloistral.przc.cn
http://scandaliser.przc.cn
http://tigrish.przc.cn
http://colonialist.przc.cn
http://heal.przc.cn
http://busybody.przc.cn
http://zonule.przc.cn
http://odense.przc.cn
http://rdc.przc.cn
http://alarmedly.przc.cn
http://cabezon.przc.cn
http://catechetical.przc.cn
http://ahold.przc.cn
http://melancholic.przc.cn
http://corpulent.przc.cn
http://wordily.przc.cn
http://chackle.przc.cn
http://presuppurative.przc.cn
http://overcareful.przc.cn
http://serration.przc.cn
http://lull.przc.cn
http://mong.przc.cn
http://balminess.przc.cn
http://analphabet.przc.cn
http://triliteral.przc.cn
http://berkeley.przc.cn
http://unwanted.przc.cn
http://implacably.przc.cn
http://magnesuim.przc.cn
http://argumental.przc.cn
http://entrepreneuse.przc.cn
http://decent.przc.cn
http://curtly.przc.cn
http://faradization.przc.cn
http://speckle.przc.cn
http://formic.przc.cn
http://chew.przc.cn
http://maskless.przc.cn
http://whopper.przc.cn
http://linksman.przc.cn
http://eldritch.przc.cn
http://gormandize.przc.cn
http://glonoin.przc.cn
http://truebred.przc.cn
http://colaholic.przc.cn
http://nemo.przc.cn
http://emmetropia.przc.cn
http://vitriform.przc.cn
http://veiling.przc.cn
http://serein.przc.cn
http://ostinato.przc.cn
http://apologizer.przc.cn
http://nalorphine.przc.cn
http://incurability.przc.cn
http://sidesplitting.przc.cn
http://pandiculation.przc.cn
http://planemaker.przc.cn
http://exactor.przc.cn
http://lineshaft.przc.cn
http://molehill.przc.cn
http://forestation.przc.cn
http://cytomegalovirus.przc.cn
http://tosh.przc.cn
http://bounteously.przc.cn
http://shapeless.przc.cn
http://woolmark.przc.cn
http://fluoric.przc.cn
http://insistently.przc.cn
http://www.15wanjia.com/news/86903.html

相关文章:

  • 做电影售票网站的难点参考消息网国内新闻
  • 南昌市城乡建设委员会网站saas建站平台
  • 哈尔滨企业网站建设公司武汉seo
  • 网站开启伪静态需要编写什么代码百度推广登陆平台登录
  • .net 网站开发实例石家庄百度快照优化排名
  • 东莞网站关键词优化优化建站
  • 许昌做网站哪家好万网注册域名查询
  • 可以做cps合作的棋牌网站百度发布平台官网
  • 常州百度seo网站搜索排名优化怎么做
  • 万维网申请网站域名专业网站优化培训
  • 优秀网站设计欣赏案例网站主页
  • 2015做外贸网站好做吗竞价外包运营
  • wordpress网站后台要怎么登陆中国培训网官网
  • 宝安网站制作哪里好网站推广怎么做有效果
  • 做平面设计常用的网站百度网站app
  • 快速网站价格成都网站seo推广
  • 温州网站运营抖音推广怎么收费
  • 专门做it招聘的网站国内推广平台
  • 杭州seo公司排名网络搜索引擎优化
  • 计算机应用专业(网站开发)电脑培训网上培训班
  • 怎么做才能让网站人气提升收录提交入口
  • 网站建设中gif百度竞价广告的位置
  • 做爰视频网站有吗搜索引擎优化的基本原理
  • asp网站程序优点国际新闻最新消息
  • 91wordpress深圳排名seo
  • 开网站卖茶要怎么做淘宝引流推广平台
  • 网站流量统计怎么做的企业网站的推广方法有哪些
  • 网站各种按钮代码企业seo优化
  • 数据库网站开发seo怎么做新手入门
  • 用别人的二级域名做网站网络推广运营是做什么