V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
dovme
V2EX  ›  算法

想问一道昨天面试的算法题

  •  
  •   dovme · 2020-07-14 17:34:43 +08:00 · 1374 次点击
    这是一个创建于 1597 天前的主题,其中的信息可能已经有所发展或是发生改变。

    1 到 10^16(一到一亿亿)之间所有的降序数的个数,要求 1 秒出结果,不能穷举。语言不限。

    降序数:高位数大于或等于低位数的数字。

    正例:951, 62,321,8876,9

    反例:123, 895 。

    实在是不会啊。一点思路也没有,可悲的是百度我都没查到。

    lance6716
        1
    lance6716  
       2020-07-14 19:41:13 +08:00 via Android
    dp ?状态是(首位数字,长度)
    geemaple
        2
    geemaple  
       2020-07-15 09:37:31 +08:00 via iPhone
    数学题?无奈数学太渣,1 位数 0-9 都不是答案,2 位 9 开头有 0 种,8 开头 1 种... 1 开头 9 种 ... ,3 位数不会推到,哈哈,一直推到 16 位数
    geemaple
        3
    geemaple  
       2020-07-15 09:46:34 +08:00 via iPhone
    如果求反了,用总个数-答案🤔
    lllue
        4
    lllue  
       2020-07-15 10:33:51 +08:00
    ```
    ans=0;
    dp[10]//十位数组
    for(i from 0 to 9) dp[i]=1;//一位数
    for(i from 1 to 15) //二位数及以上
    for(j from 1 to 9)
    dp[j]=dp[j]+dp[j-1];
    for(i from 0 to 9) ans+=dp[i];
    ```
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3112 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 13:32 · PVG 21:32 · LAX 05:32 · JFK 08:32
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.