dovme
V2EX  ›  算法

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

  •  
  •   dovme · Jul 14, 2020 · 2228 views
    This topic created in 2148 days ago, the information mentioned may be changed or developed.

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

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

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

    反例:123, 895 。

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

    lance6716
        1
    lance6716  
       Jul 14, 2020 via Android
    dp ?状态是(首位数字,长度)
    geemaple
        2
    geemaple  
       Jul 15, 2020 via iPhone
    数学题?无奈数学太渣,1 位数 0-9 都不是答案,2 位 9 开头有 0 种,8 开头 1 种... 1 开头 9 种 ... ,3 位数不会推到,哈哈,一直推到 16 位数
    geemaple
        3
    geemaple  
       Jul 15, 2020 via iPhone
    如果求反了,用总个数-答案🤔
    lllue
        4
    lllue  
       Jul 15, 2020
    ```
    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];
    ```
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5891 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 53ms · UTC 02:46 · PVG 10:46 · LAX 19:46 · JFK 22:46
    ♥ Do have faith in what you're doing.