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

2020-07-14 17:34:43 +08:00
 dovme

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

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

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

反例:123, 895 。

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

1416 次点击
所在节点    算法
4 条回复
lance6716
2020-07-14 19:41:13 +08:00
dp ?状态是(首位数字,长度)
geemaple
2020-07-15 09:37:31 +08:00
数学题?无奈数学太渣,1 位数 0-9 都不是答案,2 位 9 开头有 0 种,8 开头 1 种... 1 开头 9 种 ... ,3 位数不会推到,哈哈,一直推到 16 位数
geemaple
2020-07-15 09:46:34 +08:00
如果求反了,用总个数-答案🤔
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];
```

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/689998

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX