好吧,这么一个结构简单明确的题我做了半天才做出来(确切的说是从下午一直做到晚上)—|||

(1)因为刚看了前面的关于动态规划知识,所以在这个地方就又想到找一些规律出来。比如21和22其实这两个数字的十位都是20,对于每个数字都要将20--》II,调用一次转换子函数。这样子的话,会产生很多的重复工作。

      由于转换的方式是将n3n2n1n0,每一个位置分别考虑,相邻的位置不会互相影响(意思就是比如说123,那么我们在转换2的时候,只考虑十位,不需要考虑百位和个位)。

      这样子的话,可以预先将每个数字都做拆分,然后统计从1---n,共有多少个1、2、3、3……9,多少个10、20、30、……90以及多少个100、200、300、……900、1000.

设m在1-9之间,那么统计公式为

f(n3n2n1n0) = n/10^(i+1) * 10^ i   +  0       m > ni

                   = n/10^(i+1) * 10^ i   + 1        m = ni

                   = n/10^(i+1) * 10^ i   + 10^i    m < ni

这样子可以大大减少重复工作。

相关文章:

  • 2021-10-30
  • 2022-12-23
  • 2022-12-23
  • 2021-12-08
  • 2022-02-26
  • 2022-12-23
  • 2021-07-23
猜你喜欢
  • 2021-10-14
  • 2022-12-23
  • 2022-02-05
  • 2022-12-23
  • 2021-05-19
  • 2021-06-16
  • 2021-11-23
相关资源
相似解决方案