a-算法求解八数码问题python,a-算法实现八数码问题Python

  a*算法求解八数码问题python,a*算法实现八数码问题Python

  主题描述:

  只包含因子2、3、5的数叫做丑数。比如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(int index){

  If (index=6)返回索引;

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

  int[]DP=new int[index];

  DP[0]=1;

  for(intI=1;我

  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];

  }

  }

  执行结果

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

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: