首页 > 编程知识 正文

八数码a算法图解例题python,丑数判断方法C语言

时间:2023-05-04 00:09:53 阅读:159634 作者:4703

主题说明:

只包含因子2、3和5的数称为丑数(Ugly Number )。 例如6、8是丑陋的数,但14因为含有因子7,所以不是。 习惯上认为1是第一个丑陋的数。 从小到大求出第n个丑数。

分析:

首先,我写了从1开始判断自然数是否是丑数,直到找到第n个丑数。 这个方法明显需要时间。 (判断一个数是否是丑数的想法:如果一个数可以被2整除,如果它可以连续被2整除,可以连续被3整除; 如果能被5整除的话,就用5除尽。 如果最后我们得到的是1,那个数量就是丑陋的数量,否则就不一样了。 )

想法:

只含有因子2、3、5的数称为丑数。 也就是说,一个丑数一定是某个丑数乘以2、3、5。 将现有丑数保存为一个数组,计算之后的丑数。 (牺牲空间以换取时间)

该方法的关键是排序,因为每个丑数是另一个丑数乘以2/3/5,所以要存储所有丑数,记住前面的下标,如果乘以前面数的2/3/5的丑数已经在后面使用,则将对应的下标前移一个

解答:

公共类解决方案{

publicintgetuglynumber _ solution (intindex ) {

if (索引=6)返回索引;

int i2=0,i3=0,i5=0;

int[] dp=new int[index];

dp[0]=1;

for(intI=1; I

DP[I]=math.min(DP[I2]*2,math.min ) dp[i5]*5,dp[i5]*5)//其中最小的是下一个丑数

//将已存在的数量向前移动

if(DP[I]==DP[i2]*2) I2;

if(DP[I]==DP[I3]*3) i3;

if(DP[I]==DP[I5]*5) i5;

}

返回DP [ index-1 ];

}

}

执行结果

在线编程的主题是你的逻辑思维,不可能让你写这么多代码,所以我相信代码一定越简洁越好。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。