zoukankan      html  css  js  c++  java
  • Preface Numbering(还没好好看USACO的解答)

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

    (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

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

  • 相关阅读:
    92 log4j日志记录
    35 反射封装占位
    34 jdbc工具封装
    33 mysql约束的增删
    32 Dao层和impl层
    31 jdbc查询,javaBean引入
    30 jdbc事务设置
    29 jdbc连接带数据操作 模板(直接复制来用)
    28 jdbc驱动包导入java项目及连接数据库流程
    27 MySQL与Oracle在语法上的一些不同点
  • 原文地址:https://www.cnblogs.com/growup/p/2031091.html
Copyright © 2011-2022 走看看