总结:
1:第i个数符合要求了,所以接下来的数都可以。如果没限制, 那么是有 10i-1 个。如果有限制,那么是 (nowx % 10i-1)+1 。
2:两种状态设置
有设状态d 没设状态d
含义 d开头的i位数.. 所有i位数..
写法差别 end = ...?num[i-1]:9 end = ...?num[i]:9
注意点 / 在循环中出现即时计算时,判断限制的条件为(isQuery && j==end)
3:此类DP,考虑转移的时候,应当 同时考虑查询 时候的情况
4:这里的记忆化搜索不太一样喔, 出口一定要写在递归 里,不然,查询状态下差到出口就会出错了~
5:特别小心,检查是否与 前导0 有关。如果与之有关, 应该也设在状态里。
6:如果时间允许,可以用 时间复杂度 换 编程复杂度(多设一维)~ 如此题